레이블이 outofmemoryerror인 게시물을 표시합니다. 모든 게시물 표시
레이블이 outofmemoryerror인 게시물을 표시합니다. 모든 게시물 표시

2012년 12월 5일 수요일

비트맵(Bitmap) 사용 시에 OutOfMemoryError가 발생한다.


체크포인트는 아래와 같다.
  1. 사용하지 않는 Bitmap객체에 대한 recycle() 처리
    1. Activity의 onPause() 또는 onDestroy()에서 member field로 사용 중인 Bitmap객체를 recycle
  2. 대용량 이미지 파일을 Bitmap객체로 decode하고자 한다면 아래와 같이 BitmapFactory의 Options을 활용하여 sampling한다.
    1. 메모리 사용량을 줄이기 위해 decode시에 Bitmap을 1/2크기로 sampling하기      위한 방법이다.
      1. BitmapFactory.Options options = new BitmapFactory.Options();
      2. options.inSampleSize = 2;
      3. bitmap = BitmapFactory.decodeFile(filepath, options);
    2. 자세한 방식은 구글링하자~^_^
  3. 특정 플랫폼 메서드 중에서는 내부적으로 OutOfMemoryError를 소비하는 경우가 있다. 그러한 경우에는 해당 method의 실패여부를 알려주는 return값을 받아서 적절히 처리한다.
    1. 내부적으로 OutOfMemoryError를 소비하는 예제 메서드. android.graphics.Bitmap.compress(Bitmap.java:729)