저번에 메모리 leak을 한번 해결했음에도 불구하고 다시 때때로 발생하는 메모리 leak 때문에 골머리를 썩고 있다.
다양하게 발생하고 있는 leakage 중에 onClickListener, onTouchListener와 관련된 부분들이 있었고, 이를 제하기 위해 서치를 했다.
우선 액티비티에서 버튼등에 설정해 준 Listener가 어느 부분에서 선언되느냐, 그리고 어느 곳에서 설정되느냐에 따라
Activity가 종료 된 이후에도 메모리에 관련 값을 참조한 채 상주하게 되는 경우가 있다 판단하였고
해결책으로 설정해두었던 Listener들을 onDestroy 부분에서 다시 null 로 전부 설정해 줌으로써
이후 OnClickListener 관련 Memory Leak이 어느정도 줄어든 것으로 보여진다.
다양한 원인과 다양한 해결방법이 있을 것이고 이 방법도 마찬가지로 완벽한 방법이 아닐 수 있다.
어쨌거나 새는 물바가지 같은 앱의 구석구석을 계속 틀어막아 볼 계획이다..
+
추가로 계속 테스트 결과 아직 관련된 메모리들이 완전히 제거되지 않은 것이 확인되고 있는데, 이 방법을 통해 액티비티 종료와 함께
곧바로 메모리 안에서 즉각적으로 제거하지는 못해도, 계속 축적되는 것은 막아주는 정도는 가능해진 것이 아닌가 정도 결론을 내릴 수 있나 싶다.
참조 :
https://medium.com/@joongwon/android-memory-leak-%EC%82%AC%EB%A1%80-6565b817a8fe
향후 메모리 leak 관련 참조하기 좋을 포스트 :
'ANDROID' 카테고리의 다른 글
[안드로이드] 무한 효과음 재생을 위한 여정 (GoldWave를 적극 활용하자) (2) | 2018.04.10 |
---|---|
[안드로이드] 구글맵에서 GeoCoder와 Animation Listener를 활용해 검색 위치 표시하기 (0) | 2018.04.10 |
[안드로이드] 디코딩 함수를 return 값을 통해 값을 넘기지 않고 변수 자체를 다루도록 해보았다 (0) | 2018.03.29 |
[안드로이드] handler의 static final화를 통한 메모리 Leak 해결 (0) | 2018.03.27 |
[안드로이드] 아이콘 스왑 애니메이션을 만들고 싶을 때, 두 개의 핸들러를 둘 것. (0) | 2018.03.23 |