JVM yığın alanı tükendiği için Daemon'un süresi doluyor


91

Android Studio'yu 3.5 Beta 1'e güncelledim ve

JVM yığın alanı tükendiği için Daemon'un süresi doluyor

yapı çalışırken mesaj. Ayrıca, derlemenin tamamlanması daha fazla zaman alıyor. Bununla ilgili bir fikri olan var mı?


2
Bunun yardımcı olup olmadığına bakın: stackoverflow.com/questions/47207126/…
Juraj Martinka

1
@JurajMartinka evet, haklısın. IDE maks yığın boyutu artırıldıktan sonra düzeltildi . Bu nedenle , en son Android Studio 3.5'te Bellek Ayarları adlı yeni bir seçenek sunarlar . Bunların hepsi Android Studio'daki bellek sızıntısını düzeltmek için yapılır.
Rishabh Sagar

Yanıtlar:


97

Bunu React Native projem için aşağıdakileri yapılandırarak çözebildim :

// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

ve

// app/build.gradle
android {
    dexOptions {
       javaMaxHeapSize "3g"
    }
}

1
@MattBooth thanx for help me
Dishant Chanchad

2
bu kodu eklediğimde react-native-vector-icons düzgün çalışmıyordu.
Amir Gorji

86

Bu , proje için yapılandırılmış maksimum yığın boyutunu artırarak düzeltilebilir .

IDE aracılığıyla:

Aşağıdaki satırları gradle.properties dosyasına ekleyin. Aşağıdaki bellek boyutu, RAM kullanılabilirliğine göre yapılandırılabilir

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m

GUI aracılığıyla:

Ayarlar'da, 'Bellek Ayarları'nı arayın ve sistem RAM kullanılabilirliğine göre IDE maksimum yığın boyutunu ve Daemon maksimum yığın boyutunu artırın .

Android Studio'da Bellek Ayarları


FWIW org.gradle.daemon varsayılan olarak true olur, böylece bu satıra gerek kalmaz.
Smalls

22

Çözüm, Android derleme belleğini artırmaktır.

Uygulamanıza daha fazla modül ekledikçe, Android derleme sistemine inanılmaz bir talep gelir ve varsayılan bellek ayarları çalışmaz. Android derlemeleri sırasında OutOfMemoryErrors'ı önlemek için /android/gradle.properties dosyasında bulunan alternatif gradle bellek ayarının açıklamasını kaldırmalısınız :

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Gradle.properties dosyasını android klasörünün içinde bulabilirsiniz .

PS

Bunu ne yapıyoruz ve neden yardımcı oluyor?

Her şeyi anlamak için bazı temel terminolojiyi açıklığa kavuşturmama izin verin.

Daemon : - Bir arka plan programı, etkileşimli bir kullanıcının doğrudan kontrolü altında olmaktan ziyade bir arka plan işlemi olarak çalışan bir bilgisayar programıdır.

Android Studio 2.1 yeni bir özelliği etkinleştirir: Tam temiz derlemelerin hızını önemli ölçüde artırabilen ve Anında Çalıştırma performansını iyileştirebilen Dex In Process .

Dex In Process'ten yararlanmak için, gradle.properties dosyanızı değiştirmeniz ve org.gradle.jvmargs özelliğini kullanarak Gradle Daemon VM'ye ayrılan bellek miktarını 1 Gb artırarak minimum 2 Gb'ye çıkarmanız gerekir. :

Arka plan programı işlemi için kullanılan JVM bağımsız değişkenlerini belirtir. Ayar, özellikle bellek ayarlarında ince ayar yapmak için kullanışlıdır.

org.gradle.jvmargs=-Xmx2048m

Varsayılan değer:

-Xmx10248m -XX:MaxPermSize=256m

Varsayılan Gradle Daemon VM bellek tahsisi 1 gigabayttır - bu, dexInProcess'i desteklemek için yetersizdir, bu nedenle avantajdan yararlanmak için bunu en az 2 gigabayta ayarlamanız gerekir.

Dex in işlemi, Gradle ile paylaşılan tek bir VM içinde birden fazla DEX işleminin çalışmasına izin vererek çalışır; bu nedenle, etkinleştirilmeden önce fazladan bellek ayırmanız gerekir - bu bellek, Gradle ve birden çok DEX işlemi arasında paylaşılır.

Modül düzeyindeki build.gradle dosyanızda javaMaxHeapSize değerini varsayılan 1 gigabayt'ın ötesine yükselttiyseniz, Gradle Daemon'a atanan belleği buna uygun şekilde artırmanız gerekir.

Yeterli bellek atandığında, İşlemde Dex varsayılan olarak etkinleştirilir ve genel derleme performansını iyileştirir ve birden çok paralel sanal makine örneği başlatma yükünü ortadan kaldırır . Sonuç, Anında Çalıştırma, artımlı ve tam derlemeler dahil olmak üzere tüm derleme sürelerinde önemli bir iyileştirmedir.

Kaynak: https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e

https://rnfirebase.io/#increasing-android-build-memory


1
Bunun ne yaptığını ve neden yardımcı olduğunu açıklayabilir misiniz?
Alex


1
Merhaba @KailashUniyal, android stüdyosunun gui'sinde 2048'de yığın boyutuna sahipsem ve hala 'JVM yığın alanı tükendiği için Süresi Dolan Daemon'u alıyorsam?
abdi

@abdi Bunu gradle.properties içine koymayı deneyin org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8. Hala çalışmıyorsa, üzgünüm bunu nasıl düzelteceğimi bilmiyorum.
Kailash Uniyal

1
un-commenting bir çekicilik org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8gibi android/gradle.propertiesçalıştı. Teşekkürler!! @KailashUniyal
vikas bansal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.