밑에서 질문했었는데요... 해결이 안되서.. 이론적인 질문좀 하려고 합니다.


일단 제가 하는 프로젝트는 큰 이미지를 불러와서 줌인,줌아웃,회전,자르기를 하나의 액티비티에서 수행하는 것입니다.

그리고 잘린 이미지를 파일로만들어 path를 반환해줍니다.



여기서 발생하는 문제점은 아주 큰 이미지를 처리하기 때문에 out of memory가 발생한다는 것입니다.


인터넷검색 엄청나게했고, 다 시도해봤습니다.



아웃오브메모리를 거의 해결하긴 했는데요..


문제는 같은 작업을 여러번 반복하다보면 결국 아웃오브메모리가 발생한다는것입니다.


메인액티비티에서 이미지액티비티를 열고 작업을 수행한후 이미지액티미티를 finish합니다.

또다시 메인액티비티에서 이미지액티비티를 열고 작업 수행, finish

..반복..



이게 5번 정도 반복되면 아웃오브메모리가 뜨네요...


그래서 제가 궁금한 것은..


메모리해제를 해줬는데, 왜 이럴까 하는점입니다.


제가 메모리를 해제해준 방법은 아래와 같습니다.



 if(mainBitmap!=null){
			mainBitmap.recycle();
			mainBitmap = null;
		}


if(((BitmapDrawable)imgView.getBackground()) != null){
			((BitmapDrawable)imgView.getBackground()).getBitmap().recycle();
			imgView.getBackground().setCallback(null);
		}


 System.gc();




물론 onDestroy에서 하였습니다.


조언좀 부탁드리겠습니다!