이것도 꽤 고생했다
프로젝트 크기가 커지면서 테스트케이스들이 많아지고 어느순간부터 OOM 발생 ..
여러 문서들에서는
gradle.properties에서는 아래와 같은 형태로 메모리를 늘리면 된다
org.gradle.jvmargs=-Xmx2g
라고하는데
나의 경우는 제대로 잘 동작하지 않았다 <- 사실 이 문제를 아는데까지가 굉장히 오래걸렸음
결론부터 말하면 gradle.properties는 gradle daemon과 관련된 설정이다
아래 jps -lv 명령어를 사용하면 실제로 org.gradle.launcher.daemon.bootstrap.GradleDaemon <- 이놈들의 heap size 설정만 변경된것을 확인할 수 있다
jps -lv
2634 org.gradle.launcher.daemon.bootstrap.GradleDaemon ... -Xmx2g
16186 org.gradle.launcher.GradleMain ... -Xmx64m -Xms64m
13051 org.gradle.launcher.daemon.bootstrap.GradleDaemon ... -Xmx2g
16271 worker.org.gradle.process.internal.worker.GradleWorkerMain -Xmx512m
...
하지만 실제 build를 수행하는애들은 worker인게 문제!!!
실제로 문서에는 아래와 같이 되어있다
https://docs.gradle.org/current/userguide/upgrading_version_4.html#rel5.0:default_memory_settings
All workers, including compilers and test executors, now start with 512MB of heap. The previous default was 1/4th of physical memory. Large projects may have to increase this setting on the relevant tasks, e.g. JavaCompile or Test
나랑 비슷한 질문을 한 사람도 있다 https://github.com/gradle/gradle/issues/8166
따라서 build.gradle에는 아래와 같은 스크립트가 추가되어야한다
test {
maxHeapSize = "1024m" //원하는 만큼 변경
}
위에서 설정한 heapSize가 실제로 gradle build 명령어에서 사용하는 heap size를 수정하게 해준다!
멀티프로젝트라면 아래와 같이 하면 된다
subprojects {
test {
maxHeapSize = "1024m" //원하는 만큼 변경
}
...
}
쩝 ..써놓고 보니까 별거없어보임 ㅠ
'etc' 카테고리의 다른 글
[Intellij] intellij breakpoint 지정 후 디버깅시 IDE가 느려질때 해결방법 (1) | 2021.06.03 |
---|---|
[Elasticsearch] max file descriptors [4096] for elasticsearch process is too low 오류 해결 (0) | 2021.02.18 |
[h2] h2 db에서 제약조건 제거하고 테이블 초기화 & 삭제하기 (0) | 2020.11.24 |
[QueryDsl] querydsl jpa 사용시 UnsupportedOperationException 해결 (4) | 2020.10.26 |
[h2] h2 database multi connection 옵션주기 (0) | 2020.09.02 |