web-dev-qa-db-ja.com

Android Gradle:javaMaxHeapSize "4g"とは何ですか?

Androidプロジェクト、build.gradleファイルで、私はこの行を通り抜けました

dexOptions{
    javaMaxHeapSize "4g"
}

これの正確な目的を知りたいjavaMaxHeapSizeとその意味4gの意味。私が与えることができる他の値は何ですか?

38
Kamalakannan J

上記の回答 で述べたように、これは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操作の最大ヒープサイズです。

31
Stanislav

これは、dex操作のヒープサイズを増やす文書化されていないオプションです。 https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ

7
Scadge

build(apkファイル)の作成中にgradleが使用できる最大のRam。これはプロジェクトの構造とサイズに応じて変更でき、少なくとも「4g」のRAMを許可しても常に安全ですが、時々minifyEnabled trueまたは-を使用する場合のように上げる必要もありますshrinkResources trueリリースビルドのgradleのフラグ

0
Sahil