在Android项目,的build.gradle文件,我已经通过这条线Android Gradle:什么是javaMaxHeapSize“4g”?
dexOptions{
javaMaxHeapSize "4g"
}
我想知道这确切目的javaMaxHeapSize,什么是4克手段。我可以给予什么其他的价值?
在Android项目,的build.gradle文件,我已经通过这条线Android Gradle:什么是javaMaxHeapSize“4g”?
dexOptions{
javaMaxHeapSize "4g"
}
我想知道这确切目的javaMaxHeapSize,什么是4克手段。我可以给予什么其他的价值?
因为它在answer above提到的,它只是用来指定Java虚拟机的最大内存分配池(JVM)的选项为了dex操作。这是一样的,以提供给java的-xmx
参数。由于它是从here的源代码,它的制定者的样子:
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
。你可以阅读the man page here。它说,这个标志:
指定内存分配池的最大大小(以字节为单位)。该值必须是大于2MB的1024的倍数。附加字母k或K表示千字节,或者m或M表示兆字节。默认值是在运行时根据系统配置选择的。
在你的例子中,4g
是4千兆字节,这是dex操作的最大堆大小。
这是一个无证选项来增加堆大小DEX操作:https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
dexOptions{
javaMaxHeapSize "4g"
}
在build.gradle
写这之后去gradle.properties
并启用此行:“?是否有任何缺点设置这个数字真正的高”
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Xmx应至少设置为javaMaxHeapSize。在你的例子中,它是一半的大小。 – OldSchool4664
@ OldSchool4664他是对的。它应该超过4096米。 – kimkevin
这是我没有看到的问题。我最近将我的4G从4g改为8g,以防未来我的游戏应用没有明显的不良影响。 – Androidcoder