在一个安卓项目中,构建.gradle文件,我已经经历过这一行
dexOptions{
javaMaxHeapSize "4g"
}
我想知道这样做的确切目的java最大堆大小那是什么4g方法。我还能提供哪些其他价值?
正如它在上面回答 https://stackoverflow.com/a/33750485/4053652,它只是为 dex 操作指定 Java 虚拟机 (JVM) 的最大内存分配池的选项。它是相同的,为 java 提供-xmx
争论。由于它的源代码来自here https://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/DexOptionsImpl.groovy,它的设置器看起来像:
if (theJavaMaxHeapSize.matches("\\d+[kKmMgGtT]?")) {
javaMaxHeapSize = theJavaMaxHeapSize
} else {
throw new IllegalArgumentException(
"Invalid max heap size DexOption. See `man java` for valid -Xmx arguments.")
}
因此,您可以看到,接受的值应该与\d+[kKmMgGtT]?
模式,因此不是,它甚至指的是man java
了解如何设置-xmx
。你可以阅读手册页在这里 http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html。它说,这个标志:
指定内存分配池的最大大小(以字节为单位)。该值必须是 1024 的倍数且大于 2MB。附加字母 k 或 K 表示千字节,或附加 m 或 M 表示兆字节。默认值是在运行时根据系统配置选择的。
在你的例子中,4g
为 4 GB,这是 dex 操作的最大堆大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)