2015-12-16 17 views
14

Używam programu Gradle 2.5 do kompilowania projektu Java, który składa się z 5 modułów. Aby przyspieszyć działanie, używam również demona gradle. Jednak podczas kompilacji istnieje do 18 wystąpień uruchomionego programu gradle-daemon. Po zakończeniu kompilacji pozostało 15 egzemplarzy demona. Proces demona zużywa około 600 MB pamięci RAM. Czy to normalne, że w tle działa wiele demonów, czy też jest źle skonfigurowany demona gradle?Zwiększenie wykorzystania pamięci przez demona gradle

UPDATE: Mój system operacyjny to Debian Jessie. Wersja Java to Oracle Java 8.

+0

Nie, to nie jest normalne. Jak uruchamiasz swoją kompilację? Z CLI lub Android Studio? – Antoniossss

+0

Używam CLI. Polecenie wydawane przeze mnie to "./gradlew build" – nautical

+0

Wtedy nie jestem pewien, czy używasz demona - powinno to być ustawione globalna konfiguracja gradle, aby używać parametru deamon i ommit 'daemon'. Wypróbuj './gradle build --daemon' – Antoniossss

Odpowiedz

13

Po uzyskaniu porady Antoniossss skontaktowałem się z programistą. Jak się okazuje, Gradle jest w rzeczywistości dość głodny zasobów. Nawet dla prostej aplikacji "Hello World" demon może używać bardzo dobrze do 150 MB, a może nawet więcej. Jest również w porządku, że wiele wątków demona jest uruchomionych, o ile działają one w tej samej maszynie JVM. Istnieje tylko ograniczona kontrola po stronie użytkownika, aby kontrolować/ograniczać wykorzystanie pamięci. One może ustawić zmienną GRADLE_OPTS, aby przejść do opcji xmx JVM, np, udało mi się zbudować mojego Android projekt z następującymi ustawieniami:

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

Pierwsza opcja -Xmx jest ustawiony na Gradle, które rozpocznie się w CLI, drugi (po -Dorg.gradle.jvmargs) jest wartością -Xmx dla Gradle-Daemona.

Im mniej pamięci na maszynę JVM, tym większe ryzyko niepowodzenia instalacji - oczywiście. Być może będziesz musiał dostroić te ustawienia, dopóki nie będą odpowiadać twoim celom.

Ustawienia te można również ustawić w pliku gradle.properties.

+0

Dziękuję za to, ale nie zgadzam się z tym, że "Im mniej pamięci na maszynę JVM, tym większe ryzyko niepowodzenia swojej instalacji - oczywiście". - moja kompilacja nie działa, ponieważ kompilacja zabiera za dużo pamięci, a obraz Docker jest skonfigurowany tak, aby nie pozwalał na więcej. – mjaggard

Powiązane problemy