현재 개발중인 어플내에서 특정 문서양식을 만들어 PDF파일로 제공해주는 기능이 있습니다.
문서양식에는 어플이용자의 정보가 문서에 포함되기 때문에 비트맵을 만들어 캔버스로 직접 그려서
PDF파일로 만들고 있습니다.
이 기능은 특정 액티비티에서 PDF문서 발행이라는 버튼을 누르면 해당 문서의 프리뷰 화면이 뜹니다.
이때 캔버스로 그려서 문서양식을 만들어 프리뷰화면에 띄워주고 있구요..그리고 사용자가
확인 후 인쇄를 선택해서 인쇄 할 수 있도록 로직이 구성되어 있는데요, 문제가..
PDF문서 발행이라는 버튼을 눌러서 프리뷰화면을 볼때마다 사용 메모리가 점점 쌓입니다..
물론 이문제에 대한 대책으로 프리뷰화면이 onDestroy될때 사용한 모든 비트맵을
recycle및 null로 참조해제 및 GC를 호출 해주고 manifest에 large-heap도 해주었습니다.
이렇게 했는데도... 해당기능 버튼을 누를때 마다 사용 메모리는 계속 쌓이더군요....
테스트해보면 해당 기능을 50번 실행시켰을때 OOM이 발생합니다..
물론 현재 예측상 사용자가 50번이나 실행시킬 가능성은 희박하지만.. 만약이란게 있어서..
GC_BEFORE_OOM freed 74K, 1% free 516737K/518636K, paused 62ms, total 62ms
Out of memory on a 9272336-byte allocation.
로그에는 위와 같이 나오구요.. 그리고 테스크메니져 실행시켜서 해당 어플메모리사용량을 보면
520MB까지 사용합니다.. 이게 정상적인건 아니잖아요..이렇게 메모리 사용량 많은 어플 본적이없어서..
이거 어떻게 해결을 해야 할 지 잘 모르겠습니다.. 조언 부탁드립니다.