2015-01-17 2 views
2

Android에서 가비지 수집에 대한 좋은 정보를 찾는 데 문제가 있습니다.Android 가비지 수집 이해

내 응용 프로그램을 실행하고 나는 할당 된 메모리가 볼 Android 기기 모니터 으로 모니터 :

당신이 메모리 예외 여기

이있을 때 난 정말 이해하지 못하는 질문입니다 응용 프로그램이 막 시작되면 8MB입니다.

푸시 할 때마다 개체를 만드는 버튼이 있습니다.

그래서 버튼을 계속 누르면 할당 된 메모리가 이 될 때까지 커지고 힙 크기에 도달합니다. 힙 크기에 도달하면 할당 된 메모리는 8MB로 돌아가지만 힙은 조금 증가했습니다. 그 후 이 모든 일이 다시 일어나고 힙이 계속 자랄 것입니다.

이 경우 메모리 예외가 있습니까? 또는 힙 크기가 계속 증가하는 것은 정상입니까? ?

답변

1

힙 크기는 사용할 수있는 예약 된 종류의 메모리입니다. 할당 된 메모리는 사용중인 실제 메모리입니다.
할당 된 메모리가 힙 크기에 가까워지고 할당 된 메모리가 떨어지는 것을 볼 때 개체가 가비지 수집됩니다. 힙 크기는 현재 예약되어있는 것보다 많은 메모리를 필요로하기 때문에 약간 증가 할 것입니다.
결국 메모리를 할당하지 않고 계속 할당하면 시스템의 메모리가 부족해질 때까지 힙 크기와 할당 된 메모리가 증가합니다 (응용 프로그램의 경우). 이 시점에서 OutOfMemoryException이 던져지면 이 발생하고 앱이 충돌하여이됩니다.

깊은 통찰력을 위해 Managing Your App's Memory | Android Developers을 읽으십시오.

+0

설명서를 읽었지만 완전히 이해할만큼 구체적이지 않습니다. 그래서 내가 뭘 이해 가비지 수집은 할당 된 메모리 힙 크기 주위에 없을 때 발생합니다. 따라서 버튼이 눌려지면 힙은 오브젝트를 생성하는 데 필요한 힙 크기에 도달 할 때까지 계속 증가하지만 가비지 콜렉션이이를 처리하기 때문에 특정 시점에서 성장이 멈춰야합니다 휴리스틱 스에 의해 결정되는 순간? – Joske369