、私はこのjavaMaxHeapSizeの正確な目的を知っていただきたいと思いAndroid Gradle:javaMaxHeapSize "4g"とは何ですか?アンドロイドプロジェクト、<strong><em>build.gradle</em></strong>ファイルで
dexOptions{
javaMaxHeapSize "4g"
}
と何は手段を4gのないことを、このラインをしてきました。私が与えることができる他の価値は何ですか?
、私はこのjavaMaxHeapSizeの正確な目的を知っていただきたいと思いAndroid Gradle:javaMaxHeapSize "4g"とは何ですか?アンドロイドプロジェクト、<strong><em>build.gradle</em></strong>ファイルで
dexOptions{
javaMaxHeapSize "4g"
}
と何は手段を4gのないことを、このラインをしてきました。私が与えることができる他の価値は何ですか?
それは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動作のための最大ヒープサイズです。 build.gradle
でこれを書いた後
これはDEX操作のためにヒープサイズを増やすために文書化されていないオプションです:https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
dexOptions{
javaMaxHeapSize "4g"
}
gradle.properties
に移動し、この行を有効:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Xmxは少なくともjavaMaxHeapSizeに設定する必要があります。あなたの例では、サイズの半分です。 – OldSchool4664
@ OldSchool4664彼は正しいです。それは4096m以上でなければならない。 – kimkevin
を「本当の高いこの番号を設定する任意の欠点はありますか?」私が扱っていない質問です。私は最近、鉱山を4gから8gに変更して、明らかに悪影響を及ぼすことなく、私のゲームアプリを将来的に証明しました。 – Androidcoder