在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