마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지뷰 메모리 해제 관련 질문입니다

0 추천

안녕하세요?

커스텀 다이얼로그를 만들고, 다이얼로그에는 이미지뷰가 하나 있습니다.

이미지뷰는 다이얼로그 호출시 drawable을 같이 넘겨줘서 띄우고 있습니다.

그리고 dismiss시에는

drawable = null;
iv.setImageDrawable(null);

해주고 있습니다.

그런데 다이얼로그를 열고 닫고 다시 열면 메모리가 계속 동일하게 증가합니다.

이미지뷰 없이 열면 적은폭 증가, 이미지뷰 있게 열면 이미지 크기만큼 메모리가 증가하는데요,

dismiss때 null을 주고

호출한곳에서도 dialog = null 해주고

System.gc() 해줘도 반응이 없고 그냥 계속 증가합니다.

앱을 사용하다 JAVA가 자동으로 GC 할때는 증가했던 이미지 메모리가 회수되는것 같긴 한데요,

다이얼로그를 닫을때 메모리를 바로 회수할 방법 없을까요?

파르네제 (2,030 포인트) 님이 2018년 11월 14일 질문

1개의 답변

0 추천
 
채택된 답변
JVM 입장에서는 메모리를 바로 회수할 이유가 없으니, 회수 하지 않는 것입니다.

다시 쓰이는 메모리가 있을 수 도 있고, 필요 없는 메모리를 바로 바로 회수하면,

회수하는 비용(CPU) 때문에 오히려 다른 루틴의 동작 성능에 영향을 미칠수도 있습니다.

메모리 회수는 JVM 자체 정책이 맡기는게 가장 성능이 좋습니다.
디자이너정 (42,810 포인트) 님이 2018년 11월 14일 답변
파르네제님이 2018년 11월 28일 채택됨
...