Androidプロジェクト、build.gradleファイルで、私はこの行を通り抜けました
dexOptions{
javaMaxHeapSize "4g"
}
これの正確な目的を知りたいjavaMaxHeapSizeとその意味4gの意味。私が与えることができる他の値は何ですか?
上記の回答 で述べたように、これはdex操作用のJava Virtual Machine(JVM)の最大メモリ割り当てプールを指定するための単なるオプションです。 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
の設定方法を知ることができます。 こちらのmanページ を読むことができます。そして、それはこのフラグが言う:
メモリ割り当てプールの最大サイズをバイト単位で指定します。この値は、2MBより大きい1024の倍数でなければなりません。キロバイトを示すには文字kまたはKを、メガバイトを示すにはmまたはMを追加します。デフォルト値は、システム構成に基づいて実行時に選択されます。
あなたの例では、4g
は4ギガバイトであり、これはdex操作の最大ヒープサイズです。
これは、dex操作のヒープサイズを増やす文書化されていないオプションです。 https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
build(apkファイル)の作成中にgradleが使用できる最大のRam。これはプロジェクトの構造とサイズに応じて変更でき、少なくとも「4g」のRAMを許可しても常に安全ですが、時々minifyEnabled trueまたは-を使用する場合のように上げる必要もありますshrinkResources trueリリースビルドのgradleのフラグ