gradle로 테스트를 돌리다 보면 아래와 같이 heap memory 부족 문제가 발생하는 경우가 있다.
Caused by: java.lang.OutOfMemoryError: Java heap space
여러 문서들에서는
gradle.properties에서는 아래와 같은 형태로 메모리를 늘리면 된다
org.gradle.jvmargs=-Xmx2g
라고하는데 적용을 해도 계속 동일한 에러가 발생한다.
gradle.properties는 gradle daemon과 관련된 설정으로
org.gradle.launcher.daemon.bootstrap.GradleDaemon 의 heap size 설정만 변경되며,
실제 build를 수행하는애들은 worker의 heap size(500MB)는 변경이 되지 않는다.
workers, including compilers and test executors, now start with 512MB of heap.
https://docs.gradle.org/current/userguide/upgrading_version_4.html#rel5.0:default_memory_settings
조치 방법
build.gradle 파일의 test Task에 아래와 같이 maxHeapSize를 지정하면 해결된다.
tasks.named('test') {
maxHeapSize = "2048m"
useJUnitPlatform()
}
또는
test {
maxHeapSize = "1024m" //원하는 만큼 변경
}
멀티 프로젝트 라면...
subprojects {
test {
maxHeapSize = "1024m" //원하는 만큼 변경
}
...
}
또 다른 방법으로는 IntelliJ Preferences 에서
Gradle 설정의 Run Test using 을 Gradle에서 IntelliJ 로 변경하면
Gradle을 사용하지 않기 때문에 문제가 발생하지 않지만,
왠지 문제를 회피하는 것 같아서 해결 방법을 찾았다.
그런데 Bulk Data Insert 와 같은 CPU, Memory에 부하가 걸리는 작업은
Gradle Run Tests 보다 IntelliJ가 두 배 정도 성능이 빠르다는 것은 함정~ㅋㅋㅋ
100만건 데이터 Bulk Insert with Parallel 실행 시간
Gradle : 80 초
IntelliJ : 32 초
'IT > Utility' 카테고리의 다른 글
맥 양면인쇄 기본 옵션 끄는 방법 (0) | 2024.02.08 |
---|---|
IntelliJ 출력 결과 한글 깨짐 현상 (0) | 2022.09.19 |
IntelliJ IDEA MAC OS X KEYMAP 검정 배경 버전 (0) | 2022.08.16 |
파일 인코딩 확인 및 변환 방법 (0) | 2019.11.15 |