devlog/TIL
[Gradle] gradle 빌드 OOM 발생할땐?
bandal-gom
2022. 9. 20. 13:10
CI/CD 단계중 빌드단계에서 OOM이 발생하는 경우가 얼마나 될까?
일단 지금까지 여러 어플리케이션의 빌드를 돌려봤지만 처음 경험해 봤다. 🤔
젠킨스 빌드 로그에는 아래와 같이 OutofMemoryError가 발생했다는 로그가 남아있다. 그리고 힙덤프 업로드 알림이 왔다.
힙덤프를 분석해보기 위해 MAT실행 > 분석!
이런 처음 보는 에러가 memory leak의 가장 의심되는 부분이라고 분석되었다. 원인을 위해 해당 검색을 해보았지만 딱히 도움되는 글을 발견하지는 못했다. (가장 관련있어 보이는 stackoverflow의 글 일단 링크)
빌드 oom이니까 gradle의 문제아닐까..?
일단 힙덤프를 봐도 모르겠으니, 다음 타겟인 gradle을 의심해봤다. 관련해서 자료를 찾아보니, gradle daemon 의 heap size가 부족하면 OOM이 발생할 수도 있다고 한다. 당장 바꿔~~
이렇게 gradle.properties 파일에 jvmargs 옵션을 추가하고 다시 빌드를 돌려보니, 빌드가 성공적으로 돌았다!!!
그럼 왜 이전에는 빌드에 실패헀을까? 따로 설정한 값이 없었으니, gradle daemon의 default 설정으로 실행되었을텐데.
gradle daemon이 해당 프로젝트를 빌드할때 default size인 512MB보다 큰 값이 필요했던것으로 보인다.
아니 512MB보다 더 필요한 경우는 처음보네..
좀 규모가 있는 어플리케이션의 경우에는 512MB보다 더 필요하다고 gradle 문서에 써있지만, 해당 어플리케이션은 그렇게 규모가 크지는 않은데..? 규모가 큰것에 대한 기준이 뭐지? 🤔
좀 더 알아볼 부분
- gradle daemon, gradle launcher
참고한 문서
반응형