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

out of memory error가 발생합니다....

0 추천
프래그먼트를 이용해서 3개의 탭을 만들었습니다. [ 각 페이지의 xml 작업 완료]

각 페이지마다 워낙 이미지가 많다 보니, 다른 탭으로 누르다가 어느 순간 앱지 강제로 죽어버리네요.

로그를 보니 아래와 같이 출력되는데, 메모리 관련 문제인것인지요?

Caused by: java.lang.OutOfMemoryError  

다른페이지로 이동할 때 어떤식으로 이미지관련 메모리를 최소화 할 수있나요..?
anci (19,950 포인트) 님이 2014년 12월 19일 질문

1개의 답변

+1 추천
 
채택된 답변
얼마나 큰 이미지들을 사용하길래요..
매니페스트에 largeHeap은 주셧나요?
 

탭이 넘어갈때마다 기존의 이미지는 모두 초기화시켜주셔야될거같네요.

 

이미지뷰에 붙어있는 비트맵을 초기화시킬려면 imageview.getdrawableBitmap.recycle() 처럼 해주셔야 실제로 메모리에서 해제됩니다.

imageview와

bitmap 등을 따로 리사이클 시켜주셔야됩니다.

imageview recycle로 구글링한번해보세요.
기초개발자 (24,060 포인트) 님이 2014년 12월 19일 답변
anci님이 2014년 12월 19일 채택됨
답변감사합니다. 큰이미지는 아니고 자잘자잘한 이미지 수십개를 사용했습니다.
리니어 레이아웃등을 이용해서 이미지를 배치했는데 제일 많은 탭은 30개정도 쓰네요..ㅠㅠ 초기화 작업해보겠습니다~
매니페스트에 largeHeap은 주셧나요?
이미지 사이즈 샘플링은하셨구요?
자잘한 이미지 수십개쓴다고 뻗지는않을텐데, 이미지 원본크기를 확인해보세요
큰 이미지 기준이 어떤건지 모르지만 대부분 200x200정도 사이즈 입니다.
다른 페이지의 제일 큰 사이즈는 1400x300정도 하네요;;
1400<--이거 때문일거에요 사이즈가 크면 힙을 크게 잡아주면되긴하는데
폰에서는 정해진 힙사이즈가있어서 메모리에러가 날거에요
이미지를 받아서 줄여서 디스플레이 해보세요

doridori2013@nate.com
아하; 감사합니다 :) 줄여서 배치해보겟습니다
...