문제상황 


- Android Project 의 테스트케이스가 많아지면서 어느순간 부터 빌드시 Out of memory 가 발생함

- 로컬 테스트 수행할때는 시간이 오래 걸리지 않았지만, 빌드서버와 로컬 Gradle task "debugBuildTest" Task 수행시에 해당 문제가 발생

- 특정 Activity 의 테스트케이스를 Ignore 했을 경우에는 이상없이 빌드가 수행됨. 이 Activity들에서는 Dialog를 Shadow로 띄워서 테스트를 함

- 빌드서버의 메모리를 높여서 띄워봤지만 문제는 해결 되지 않음



문제해결


- 문제 원인은 하나의 Process로 작업이 진행되면서 GC가 제대로 동작하지 않아서 순간적으로 많은 양의 메모리를 사용하는 테스트가 많이 수행될 경우 Memory leak 현상이 발생된 것으로 보였고, forkEvery 옵션을 주어서 새로 Process를 생성하도록 변경하고나니 Out of Memory 문제가 해결되었고 평화로워 졌다.


같은 문제를 앓고 있는 분들에게 도움이 되었으면 한다.


testOptions {
unitTests.returnDefaultValues = true
unitTests.all {
jvmArgs '-Xmx2g', '-XX:MaxPermSize=1024m', '-XX:+HeapDumpOnOutOfMemoryError'
jacoco {
includeNoLocationClasses = true
}
forkEvery = 10
}



'Programming' 카테고리의 다른 글

[JavaScript] Switch - Fall Through  (0) 2017.05.28
RecyclerView, Cardview Example  (0) 2017.05.28
안드로이드 MVC, MVP Pattern  (0) 2017.04.05
Android Clean Architecture  (0) 2017.04.03
다른 App으로 데이터 전달 하기  (0) 2017.03.28

+ Recent posts