devlog/TIL

[Gradle] gradle 빌드 OOM 발생할땐?

bandal-gom 2022. 9. 20. 13:10
CI/CD 단계중 빌드단계에서 OOM이 발생하는 경우가 얼마나 될까? 
일단 지금까지 여러 어플리케이션의 빌드를 돌려봤지만 처음 경험해 봤다. 🤔

젠킨스 빌드 로그에는 아래와 같이 OutofMemoryError가 발생했다는 로그가 남아있다. 그리고 힙덤프 업로드 알림이 왔다. 

내가 만든 OOM업로더 알림이 :) 

힙덤프를 분석해보기 위해 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 

참고한 문서

반응형