스마트기기개발관련/안드로이드 개발

안드로이드 메모리 초기화 문제(GC)에관한 질문드립니다. 메모리 해제 관련

AlrepondTech 2020. 9. 19. 08:34
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

출처: http://www.androidpub.com/11484

안녕하세요 저는 안드로이드 어플을 개발하고있는 학생입니다.

제가 액티비티 마다 애니메이션을 넣으려고 하는데요. 액티비티가 호출될 때마다
애니메이션이 나와야 하는데 액티비티가 어느정도 반복되면 메모리 오류가 뜨면서 프로그램을 다시실행합니다.

그림크기는 최대한으로 줄였는데 애니메이션이다보니 프레임수가 많아서 그런것같습니다.
어차피 애니메이션은 정보가 아니기때문에 이전액티비티 애니메이션이 다음애니메이션에 영향을 주지 않기때문에
다음 액티비티 호출시 이전 액티비티의 애니메이션에 할당된 메모리를 초기화 해주었으면 좋겠는데요.
물론 안드로이드에는 GC가 자동적으로 있는것도 압니다. 그러나 전부 지우지는 않는 것같아요.

http://www.androidpub.com/8159 질문답변을 보니 onDestroy()에 오브젝트들을 해제하시라고 하셨는데 어떻게 해야하는지 모르겠습니다.
단순히 액티비티.onDestroy();를 실행하면 자동적으로 되는것인지?(해봤는데 안되더라구요.) 아니면
@override
onDestroy(){
    <-- 이 안에 오브젝트를 해제하는 함수를 쓰는것인지(그 함수도 모르지만..)잘 모르겠습니다.
}

정리해서 말씀드리자면 
1. 액티비티 함수에 onPause()가 있습니다. 이 함수는 액티비티가 비활성화될때 실행된다고 하는데요.
안드로이드 안에 스택메모리 초기화하는 함수가 있나요? 아니면 강제적으로 GC를 실행시키는 함수가 있나요?
onPause(){
    super.onPause();
    System.GC(); <-- 이렇게해도 결과는 그대로입니다.
}

2. 아래와 같이 super.onDestroy();를 onPause()에 넣으면 실행되나요? 아니면 onDestroy는 어떻게 해야 호출이되나요?
onPause(){
    super.onPause();
    super.onDestroy();
}

 

 

 

반응형

 

728x90

 


긴 질문 읽어주셔서 감사합니다.

이 게시물을...

 

목록

엮인글 주소 : http://www.androidpub.com/index.php?document_srl=11484&act=trackback&key=af3

 

2009.06.09 17:19:01

회색

(추천: 1 / 0)

onDestory 를 절대로 강제적으로 호출하시지는 말아주시기 바랍니다. Activity위에 또 Activity를 뛰우는 등의 작업을 하실때 이전 Activity에서 사용하던 Animation등의 큰 리소스를 정리하시려면. onPause와 onResume에서 처리를 해주시는 것도 좋을 듯 합니다.

Java는 따로 메모리를 해제하는 것이 아니라 Garbage Collection을 사용하기 때문에 해당 Object에 대한 Reference만 제거하면 됩니다. 예를 들어 onResume에서 setBackgroundDrawable(drawable)로 세팅해주고 onPause에서는 setBackgroundDrawable(null)로 지우시고, 만약에 Activity안에 해당 drawable에 대한 변수를 가지고 있다면 모두 null을 대입해서 reference되는 부분을 없애주시면 됩니다. 

그렇게 한 후에 System.GC();  등을 실행하면 아무데서도 reference하고 있지 않는 object들이 메모리에서 제거될 수 있습니다.

 

2009.06.09 17:31:04

Dep

정말 빠르고 세세한 답변 감사드립니다. 회색님 말씀대로 해보니까 메모리오류가 안나네요. 한수 배워갑니다.(__) 

 

 

=================================

=================================

=================================

 

 

반응형