一、前言:
打开gradle.properties文件
二、分析:
1. 找到
Specifies the JVM arguments used for the daemon process.
The setting is particularly useful for tweaking memory settings.org.gradle.jvmargs=-Xmx1536m
上面的那两行是对这句话的解释:
用于指定守护进程的JVM参数。
这个设置呢,对于调整内存设置特别有用。
是指定线程调整线程内存的!
2. 那平常开发中它有什么用呢?
主要是用来加快gradle的编译!
按照官方的说法:
Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的,在JVM中堆之外的内存称为非堆内存(Non-heap memory)。
简单的说就是:
堆是java代码可占用的内存,开发人员写的东西都是堆分配的内存(底层实现除外)。而非堆内存则是JVM自己用的,比如JVM内部处理或优化,垃圾处理,常数池等。
3. 堆的内存分配用-Xms和-Xmx
- -Xms分配堆最小内存,默认为物理内存的1/64;
- -Xmx分配最大内存,默认为物理内存的1/4。
4. 非堆内存分配用-XX:PermSize和-XX:MaxPermSize
- -XX:PermSize分配非堆最小内存,默认为物理内存的1/64;
- -XX:MaxPermSize分配最大内存,默认为物理内存的1/4。
因此,合理的内存分配是程序正常稳定的运行的基础。不然内存溢出可就麻烦了。
三、出现 OOM时:
通过配置gradle.properties中的参数,可以调整编译时堆栈的大小。尤其对一些方法数比较多的工程,打开了multidex编译开关,在编译时一定要配置较大的heap,否则会出现如下提示甚至OOM错误。
To run dex in process, the Gradle daemon needs a larger heap.
It currently has 959 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to at least 1536 MB.
To do this set org.gradle.jvmargs=-Xmx1536M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html
配置文件内容:
org.gradle.jvmargs=-Xmx2048m
-XX:MaxPermSize=1024m
-XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
作者:zizi192
链接://www.greatytc.com/p/0aa02fbbef3f
作者:隨風cvil
链接://www.greatytc.com/p/9f7d27b8c1f9