본문 바로가기

문제 해결

Expiring Daemon because JVM heap space is exhausted. 안드로이드 스튜디오 빌드 에러 해결방법

문제 발생

최근에 Android Gradle 플러그인 버전을 3.0.1 -> 3.5.1로 업데이트하면서, 아래와 같이 "JVM 힙 메모리 부족" 빌드 에러가 발생하였습니다.

 

Expiring Daemon because JVM heap space is exhausted
Daemon will be stopped at the end of the build after running out of JVM memory
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted
Expiring Daemon because JVM heap space is exhausted....
Exception in thread "Thread-33" java.lang.OutOfMemoryError: Java heap space


> Task :app:compileGoogleDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileGoogleDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at 
https://help.gradle.org

문제 해결

해당 이슈는, 프로젝트에 구성된 최대 힙 메모리 크기를 늘려서 해결할 수가 있기 때문에, 힙 메모리 크기 설정을 해주도록 하겠습니다.

해결방법으로는 크게 두 가지로, 소스코드에 직접 입력하는 방법과, GUI를 이용해 간편하게 설정하는 방법이 있습니다.

이중에 저는 GUI를 이용한 방법으로 해결을 하였습니다.

(첫번째 방법) 소스코드를 직접 입력하여 설정하기

스택오버플로우에 답변된 해결방법으로, 아래와 같이 gradle.properties(프로젝트 수준)와 build.gradle(앱 수준)에 아래 소스코드를 추가해주는 방법이 있고,

 

// 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 "4g"
    }
}

(추천 방법) GUI 이용하기

제가 해결했던 방법으로, 안드로이드 스튜디오 IDE 설정 GUI를 통해 간편하게 해결할 수 있는 방법입니다.

Preferences > System Setting > Memory Settings에서 IDE max heap size, Gradle daemon max heap size, Kotlin daemon max heap size(코틀린 사용 시에만 설정 )의 사이즈 값을 설정해주도록 합니다.

 

위와 같이, 사이즈 설정 후에 다시 빌드하시면 에러 없이 정상적으로 빌드가 되는 것을 확인할 수 있습니다! ^^