2011-08-10 2 views
4

나는 큰 비트 맵 (6000x2000)가 필요를 채우고, 그래서 하나를 만들 :안드로이드 Bitmap.createBitmap()는 힙

Bitmap.Config conf = Bitmap.Config.ARGB_4444; 
Bitmap bm = Bitmap.createBitmap(6000, 2000, conf); 

그리고 방법의 끝에서 나는 BM 재활용 null로 설정합니다. 하지만 내 힙은 내 메서드가 호출 될 때마다 커집니다. OutOfMemoryError를 던질 때까지 매번.

+0

모바일 화면에 6000 * 2000 크기의 비트 맵을 만드는 용도가 무엇인지 알 수 있습니까? 여전히 OOM 문제를 줄일 수 있으므로이를 줄일 수 있습니다. –

+0

좋은 질문 : 첫 번째 질문이 내 프로필을 참조하십시오 –

+0

http://stackoverflow.com/questions/7006825/destroy-consume-memory-by-imageview –

답변

3

문제는 안드로이드 3.x 이전에 비트 맵이 제대로 안드로이드에 출시 되려면 몇 GC주기가 걸릴 수 있다는 것입니다. recycle()을 호출하더라도 최소한 비트 맵은 다음 GC가 될 때까지 힙 사용에 영향을 미친다 고 생각합니다. 이것은 System.gc()를 호출하여 GC를 강제 실행하도록 권장하는 아주 적은 상황 중 하나입니다. 또한 여러 개의 작은 비트 맵을 사용할 수도 있습니다.