2015-12-16 31 views
14

Ich benutze Gradle 2.5, um ein Java-Projekt zu kompilieren, das aus 5 Modulen besteht. Um die Dinge zu beschleunigen, benutze ich auch den Gradle-Daemon. Während der Kompilierung werden jedoch bis zu 18 Instanzen des Gradle-Daemon ausgeführt. Nach Abschluss der Kompilierung sind immer noch 15 Instanzen des Dämons übrig. Der Daemons-Prozess benötigt ca. 600 MB RAM. Ist es normal, dass so viele Daemons im Hintergrund laufen oder der Gradle-Daemon falsch konfiguriert ist?Hohe Speicherauslastung durch Gradle Daemon

UPDATE: Mein Betriebssystem ist Debian Jessie. Java-Version ist Oracle Java 8.

+0

Nein, es ist nicht normal. Wie starten Sie Ihren Build? Von CLI oder Android Studio? – Antoniossss

+0

Ich verwende das CLI. Der Befehl, den ich ausstelle, ist "./gradlew build" – nautical

+0

Dann bin ich mir nicht sicher, ob du Daemon benutzt - dies sollte in der globalen Konfiguration von grdle eingestellt werden, um den Parameter deamon und ommit 'daemon' zu verwenden. Versuchen Sie './gradle build --daemon ' – Antoniossss

Antwort

13

Nach Antoniosss 'Rat kam ich in Kontakt mit einem Entwickler. Wie sich herausstellt, ist Gradle in der Tat ziemlich ressourcenhungrig. Selbst für eine einfache "Hello World" -Anwendung kann der Daemon sehr gut bis zu 150 MB und vielleicht sogar mehr verwenden. Es ist auch in Ordnung, dass mehrere Daemon-Threads gestartet werden, solange sie innerhalb derselben JVM ausgeführt werden. Es gibt nur eine begrenzte Kontrolle auf der Benutzerseite, um die Speichernutzung zu steuern/zu begrenzen. One GRADLE_OPTS Variable gesetzt, um könnten Xmx Optionen auf die JVM, zum Beispiel zu passieren, konnte ich mein Android-Projekt mit folgenden Einstellungen erstellen:

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

Die erste -Xmx Option für die Gradle eingestellt ist, dass Sie beginnen in CLI, der zweite (nach -Dorg.gradle.jvmargs) ist der -Xmx-Wert für den Gradle-Daemon.

Je weniger Speicher Sie Ihrer JVM zur Verfügung stellen, desto höher ist das Risiko, dass Ihr Build ausfällt - offensichtlich. Sie müssen diese Einstellungen möglicherweise anpassen, bis sie Ihren Anforderungen entsprechen.

Diese Einstellungen können auch in der Datei gradle.properties festgelegt werden.

+0

Danke dafür, aber ich stimme nicht zu "Je weniger Speicher du für deine JVM hast, desto höher ist das Risiko, dass dein Build ausfällt - offensichtlich." - Mein Build schlägt fehl, da der Build zu viel Arbeitsspeicher beansprucht und das Docker-Image so konfiguriert ist, dass es nicht mehr erlaubt. – mjaggard