web-dev-qa-db-ja.com

Gradleデーモンによるメモリ使用量が多い

Gradle 2.5を使用してJava 5つのモジュールで構成されるプロジェクトをコンパイルしています。処理を高速化するために、gradle-daemonも使用しています。ただし、コンパイル時には最大18のインスタンスが存在します。 gradle-daemonが実行されています。コンパイルが完了しても、デーモンのインスタンスは15個残っています。daemonsプロセスは約600 MBのRAMを消費します。バックグラウンドで実行されているデーモンが多いのは正常ですか、それともgradle-daemonの設定が間違っていますか?

更新:私のオペレーティングシステムはDebian Jessieです。 JavaバージョンはOracleですJava 8。

23
user4918296

Antoniossssのアドバイスに従って、私は開発者と連絡を取りました。結局のところ、Gradleは実際にはかなりリソースを消費しています。単純な「Hello World」アプリケーションの場合でも、デーモンは150 MBまで、場合によってはさらに多く使用する可能性があります。同じJVM内で実行されている限り、複数のデーモンスレッドが開始されても問題ありません。ユーザーの側では、メモリ使用量を制御/制限するための限られた制御しかありません。 XRADオプションをJVMに渡すためにGRADLE_OPTS変数を設定することができます。たとえば、次の設定でAndroidプロジェクトをビルドできました:

$ export GRADLE_OPTS="-Xmx64m -Dorg.gradle.jvmargs='-Xmx256m -XX:MaxPermSize=64m'"

最初の-Xmxオプションは、CLIで開始するGradleに設定され、2番目のオプション(-Dorg.gradle.jvmargsの後)は、Gradle-Daemonの-Xmx値です。

JVMに許可するメモリが少ないほど、ビルドが失敗するリスクが高くなります-明らかに。したがって、目的に合うまで、これらの設定を調整する必要がある場合があります。

これらの設定は、gradle.propertiesファイルでも設定できます。

23
user4918296