이것도 꽤 고생했다

 

프로젝트 크기가 커지면서 테스트케이스들이 많아지고 어느순간부터 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

 

Default xmx changed before and after 5.0 for test executor? · Issue #8166 · gradle/gradle

When upgrading gradle from 4.10.2 to 5.1 (only variable, no other plugin changes), we observed some tests failing due to OOM in 5.1 which passed in 4.10.2 without any issue. With further investigat...

github.com

 

 

따라서 build.gradle에는 아래와 같은 스크립트가 추가되어야한다

test {
  maxHeapSize = "1024m" //원하는 만큼 변경
}

위에서 설정한 heapSize가 실제로 gradle build 명령어에서 사용하는 heap size를 수정하게 해준다!

 

멀티프로젝트라면 아래와 같이 하면 된다

subprojects {
  test {
    maxHeapSize = "1024m" //원하는 만큼 변경
  }
  
  ...
}

 

쩝 ..써놓고 보니까 별거없어보임 ㅠ

+ Recent posts