web-dev-qa-db-fra.com

Utilisation élevée de la mémoire par le démon gradle

J'utilise Gradle 2.5 pour compiler un Java qui se compose de 5 modules. Afin d'accélérer les choses, j'utilise également le gradle-daemon. Cependant, pendant la compilation, il y a jusqu'à 18 instances de le démon gradle est en cours d'exécution. Une fois la compilation terminée, il reste 15 instances du démon. Le processus des démons consomme environ 600 Mo de RAM. Est-il normal d'avoir autant de démons en arrière-plan ou le gradle-démon est-il mal configuré?

MISE À JOUR: Mon système d'exploitation est Debian Jessie. Java version est Oracle Java 8.

23
user4918296

Suite aux conseils d'Antoniossss, j'ai pris contact avec un développeur. Il s'avère que Gradle est en fait assez gourmand en ressources. Même pour une simple application "Hello World", le démon peut très bien utiliser jusqu'à 150 Mo et peut-être même plus. Il est également correct que plusieurs threads de démon soient démarrés, tant qu'ils s'exécutent dans la même JVM. Il n'y a qu'un contrôle limité du côté de l'utilisateur pour contrôler/limiter l'utilisation de la mémoire. On pourrait définir la variable GRADLE_OPTS afin de passer les options Xmx à la JVM, par exemple, j'ai réussi à créer mon projet Android avec les paramètres suivants:

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

La première option -Xmx est définie pour le Gradle que vous démarrez dans la CLI, la seconde (après -Dorg.gradle.jvmargs) est la valeur -Xmx pour le Gradle-Daemon.

Moins vous accordez de mémoire à votre machine virtuelle Java, plus le risque d'échec de votre build est élevé - évidemment. Vous devrez donc peut-être régler ces paramètres jusqu'à ce qu'ils correspondent à vos besoins.

Ces paramètres peuvent également être définis dans le fichier gradle.properties.

23
user4918296