JVM 힙 공간이 부족하여 데몬 만료


89

방금 Android Studio를 3.5 베타 1로 업데이트했는데

JVM 힙 공간이 부족하여 데몬 만료

빌드가 실행되는 동안 메시지. 또한 빌드를 완료하는 데 더 많은 시간이 걸립니다. 누구든지 이것에 대해 어떤 생각이 있습니까?


2
도움이된다면 여기를 참조하세요 : stackoverflow.com/questions/47207126/…
Juraj Martinka

1
@JurajMartinka 네, 맞아요. IDE 최대 힙 크기를 늘린 후 수정되었습니다 . 그래서 그들은 최신 Android Studio 3.5에 Memory Settings 라는 새로운 옵션을 도입했습니다 . 이것은 모두 Android Studio에서 메모리 누수를 수정하기 위해 수행되었습니다.
Rishabh Sagar

답변:


96

다음을 구성하여 React Native 프로젝트 에서이 문제를 해결할 수있었습니다 .

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

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

1
도움을 @MattBooth 고맙습니다 저
Dishant Chanchad

2
이 코드를 추가했을 때 react-native-vector-icons가 제대로 작동하지 않았습니다.
Amir Gorji

86

이는 프로젝트에 대해 구성된 최대 힙 크기 를 늘려서 해결할 수 있습니다 .

IDE를 통해 :

gradle.properties 파일에 아래 줄을 추가합니다. RAM 가용성에 따라 아래의 메모리 크기를 구성 할 수 있습니다.

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

GUI를 통해 :

설정에 검색 '메모리 설정' 과 증가 IDE 최대 힙 크기데몬 최대 힙 크기를 시스템 RAM의 가용성에 따라.

Android Studio의 메모리 설정


FWIW org.gradle.daemon의 기본값은 true이므로 라인이 필요하지 않습니다.
Smalls

22

해결책은 Android 빌드 메모리를 늘리는 것입니다.

앱에 더 많은 모듈을 추가하면 Android 빌드 시스템에 대한 엄청난 수요가 발생하고 기본 메모리 설정이 작동하지 않습니다. Android 빌드 중에 OutOfMemoryErrors 를 방지하려면 /android/gradle.properties에 있는 대체 gradle 메모리 설정의 주석 처리를 제거해야합니다 .

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

android 폴더 내에서 gradle.properties를 찾을 수 있습니다 .

추신

우리가 이것을하는 것은 무엇이며 왜 도움이됩니까?

전체를 이해하기위한 몇 가지 기본 용어를 정리하겠습니다.

데몬 :-데몬은 대화 형 사용자가 직접 제어하지 않고 백그라운드 프로세스로 실행되는 컴퓨터 프로그램입니다.

Android Studio 2.1 은 새로운 기능인 Dex In Process를 지원 합니다.이 기능 은 완전 정리 빌드의 속도를 대폭 향상시키고 Instant Run 성능을 개선 할 수 있습니다.

Dex In Process를 활용하려면 gradle.properties 파일을 수정 하고 org.gradle.jvmargs 속성을 사용하여 Gradle Daemon VM 에 할당 된 메모리 양을 최소 2Gb로 1Gb 늘려야합니다. :

데몬 프로세스에 사용되는 JVM 인수를 지정합니다. 이 설정은 메모리 설정을 조정하는 데 특히 유용합니다.

org.gradle.jvmargs=-Xmx2048m

기본값:

-Xmx10248m -XX:MaxPermSize=256m

기본 Gradle Daemon VM 메모리 할당은 1GB입니다. 이는 dexInProcess를 지원하기에 불충분하므로 이점을 활용하려면 최소 2GB로 설정해야합니다.

Dex in process는 Gradle 과도 공유되는 단일 VM 내에서 여러 DEX 프로세스를 실행할 수 있도록하여 작동하므로 사용 설정하기 전에 추가 메모리를 할당해야합니다.이 메모리는 Gradle과 여러 DEX 프로세스간에 공유됩니다.

모듈 수준 build.gradle 파일의 javaMaxHeapSize를 기본값 인 1GB 이상으로 늘린 경우 Gradle Daemon에 할당 된 메모리를 적절히 늘려야합니다.

할당 된 메모리가 충분하면 Dex in Process가 기본적으로 사용 설정되어 전체 빌드 성능이 향상되고 여러 병렬 VM 인스턴스를 시작 하는 오버 헤드가 제거 됩니다. 그 결과 Instant Run, 증분 및 전체 빌드를 포함한 모든 빌드 시간이 크게 향상되었습니다.

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

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


1
이것이 무엇을하고 있으며 왜 도움이되는지 설명해 주시겠습니까?
Alex

1
소스도 넣으십시오. medium.com/google-developers/…
Rishabh Sagar

1
안녕하세요 @KailashUniyal 안드로이드 스튜디오 GUI에서 힙 크기가 2048이고 여전히 'JVM 힙 공간이 소진 되었기 때문에 데몬 만료'가 발생하면 어떻게됩니까?
abdi

@abdi 이것을 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8gradle.properties에 넣으십시오. 여전히 작동하지 않으면 미안합니다. 어떻게 고칠 지 모르겠습니다.
Kailash Uniyal

1
일한 lika org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8에서 주석 을 제거 android/gradle.properties하는 것은 매력적입니다. 감사!! @KailashUniyal
vikas bansal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.