안녕하세요.
비트맵을 추가를 하려고 하는데 out of memory 가 발생을 하여
이것저것 찾아보다 메모리 체크를 하는 소스를 적용해보았습니다.
아래가 소스와 나온 결과 값인데요.(갤럭시노트 U+)
android.util.Log.d(TAG,"Native heap size: "+(Debug.getNativeHeapSize() / (1024)) + "KB");
android.util.Log.d(TAG,"Heap Free size : "+(Debug.getNativeHeapFreeSize() / (1024)) + "KB");
android.util.Log.d(TAG,"Heap Allocated size : "+(Debug.getNativeHeapAllocatedSize() / (1024)) + "KB");
android.util.Log.d(TAG,"TOTAL MEMORY : "+(Runtime.getRuntime().totalMemory() / (1024 * 1024)) + "MB");
android.util.Log.d(TAG,"MAX MEMORY : "+(Runtime.getRuntime().maxMemory() / (1024 * 1024)) + "MB");
android.util.Log.d(TAG,"FREE MEMORY : "+(Runtime.getRuntime().freeMemory() / (1024 * 1024)) + "MB");
android.util.Log.d(TAG,"ALLOCATION MEMORY : "+((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (1024 * 1024)) + "MB");

이미지를 보시면 heap free size가 178k 인데 20k 짜리 이미지를 올려도
out of memory on a 2457616-byte allocation
이런 문구가 나옵니다.
100k를 올려도 위와 같이 동일한 문구가 나옵니다.
조언 부탁드립니다.

give & take




비트맵 객체의 크기는 실제 파일의 용량과 100% 일치 하진 않더군요..
일단 생성을 ARGB_8888로 하게 되면 32bit 컬러 1pixel당 4bytes를 먹게 됩니다. 여기서 이미지의 사이즈가
256 * 256 이라면 4 * 256 * 256 = 262144 bytes ~~ 0.25mb로 잡히더군요.. 이런부분을 한번 확인해 보시는건 어떨까요
jpg같은 포맷은 일단 압축포맷이라서 많이 늘어날 가능성이 있습니다.