2015-11-17 26 views
27

、私はこのjavaMaxHeapSizeの正確な目的を知っていただきたいと思いAndroid Gradle:javaMaxHeapSize "4g"とは何ですか?アンドロイドプロジェクト、<strong><em>build.gradle</em></strong>ファイルで

dexOptions{ 
    javaMaxHeapSize "4g" 
} 

と何手段を4gのないことを、このラインをしてきました。私が与えることができる他の価値は何ですか?

+1

を「本当の高いこの番号を設定する任意の欠点はありますか?」私が扱っていない質問です。私は最近、鉱山を4gから8gに変更して、明らかに悪影響を及ぼすことなく、私のゲームアプリを将来的に証明しました。 – Androidcoder

答えて

26

それは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でこれを書いた後

-3
dexOptions{ 
    javaMaxHeapSize "4g" 
} 

gradle.propertiesに移動し、この行を有効:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 
+0

Xmxは少なくともjavaMaxHeapSizeに設定する必要があります。あなたの例では、サイズの半分です。 – OldSchool4664

+0

@ OldSchool4664彼は正しいです。それは4096m以上でなければならない。 – kimkevin

関連する問題