커스텀 리스트 뷰인 사진첩을 위아래로 왔다갔다하면 결국 Out of memory on a ~ 하면서 꺼지는 현상.
리스트 뷰 내에 용량이 큰 사진이 위치할 때 그런 오류가 훨씬 잘 발생한다.
* GC란?: http://beautyrain.tistory.com/3
* 힙 메모리란?: http://runtoyourdream.tistory.com/237
* 안드로이드의 램고자 현상의 원인: http://blog.naver.com/dr_insect?Redirect=Log&logNo=80171034051
* 안드로이드 메모리 관리에 대한 실험: http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=130262
힙 메모리 관련 급 궁금...↓
* (C, C++) 동적할당을 하는 이유?: http://tiktoor.tistory.com/40 , http://blog.naver.com/sonicjn?Redirect=Log&logNo=10027324190
http://blog.naver.com/talchulgu?Redirect=Log&logNo=10131373542
그렇다면 내 앱에서의 힙 공간 사용량을 보자..... 스크롤을 올렸다 내렸다 반복하다가 순간의 상황을 캡쳐한 것이다...
사진의 크기가 문제가 아닌 것 같다.
사진의 크기는 고작 몇백키로바이트밖에 되지 않지만
힙 공간을 왜 저리 많이 차지하는 것일까?
코드의 문제라고 생각한다.
좀 더 알아보자~
* Adapter 내의 getView에 대한 고찰
: http://myelf.egloos.com/2723978
어라? 한 부분만 고치니까 문제가 해결되었다.
원래 저 빨간 부분에 이미지다운로더를
ImageDownloader A=new ImageDownloader();
이렇게 선언해줬었는데
이는 이미지 다운로더를 getView가 호출될 때마다 힙 영역에 반복적으로 생성해주어
메모리의 누수를 가져올 수 있던 것이다.
그래서 스크롤을 할 때마다 이게 계속 선언되어 힙 영역을 차지했던 거구나..
라고 생각해본다.
결론적으로 전역으로 static 변수로 선언해주어
같은 것을 반복 사용하도록 하였더니....
아까와는 달리 안정적인 모습~~
그러나 51 메가 정도나 할당 받는데....
왜 이리 많이 받지?
그게 더 궁금하다.
'무근본 IT 지식 공유 > 무근본 안드로이드(Android)' 카테고리의 다른 글
[무근본 안드로이드] 인형 가격 구하기 (0) | 2023.04.20 |
---|---|
[무근본 안드로이드 사진첩] 리스트 뷰를 켤 때마다 같은 목록이 추가되는 현상.. (0) | 2023.03.26 |
오늘 겪은 문제) (0) | 2013.01.15 |
phpmyadmin 서버에 설치 (0) | 2013.01.10 |
Intent란? (0) | 2013.01.09 |
댓글