'로그분석'에 해당되는 글 1건

반응형

GC는 Garbage Collector의 약자입니다


dalvikvm Tag 로 


GC_CONCURRENT freed 11405k, 59% free 3107K/7431K, external 3299k/4120k, puased 4ms+3ms


라는 log가 찍힙니다. 


다음과 같은 format으로 로그가 찍힙니다.


[Reason] [Amount Freed], [Heap Statistics], [External Memory Statistics], [Pause Time]


[Reason] : GC 발동의 원인을 나타냅니다.


1. GC_FOR_MALLOC : 객체 생성의 있어서 힘에 메모리를 할달 받아야 할 때 힙에 남아있는 사용가능한 메모리 공간이 충분치 않을때.

2. GC_EXPLICIT : GC가 명시적으로 불렸을 때. Runtime.gc(), VMRuntime.gc(), SIGUSR1 등.

3. GC_CONCURRENT : 힙의 사용 한계점(사용 한계점은 내부적으로 정해진다.)을 넘어섰을때.

4. GC_EXTERNAL_ALLOC : VM이 garbage 될 객체들이 사용하고 있는 공간을 그렇지 않은 객체들을 위해 공간을 미리 확보하려 할때.

5. GC_HPROF_DUMP_HEAP : 힙의 컨텐츠를 파일로 저장할 때(WITH_HPROF flag를 사용할 때만)


[Amount Freed] : 말 그대로 읽은 파일의 Kbyte를 나타낸다.


[Heap Statistics] : GC가 발동 된 이후의 상태를 말한다. 


59% free 3107K/7431K => 남은 공간 59%, 사용중인 공간 3107K, 힙의 총 사이즈 7413K


[External Memory Statistics] : 외부 메모리 관련인데.... Bitmap 관련해서 외부메모리 따로 할당하는 것인데... 잘 이해가 안가서 생략.... ㅈㅅ (Bitmap 관련해서 따로 메모리를 쓰는 경우가 아니라면 값이 변하지 않는 것 같습니다.)


[Pause Time] : GC로 인해 일시정지된 시간 (milliseconds)


4ms+3ms => GC_CONCURRENT 일때에만 2개의 []ms+[]ms 꼴로 출력된다. 앞의 []ms는 GC가 발동되기 이전의 pause 시간이고, 뒤의 []ms는 garbage collecting이 거의 완료된 순간에 pause된 시간이다. 


참고 문헌 : http://stackoverflow.com/questions/4976566/what-do-gc-for-malloc-gc-explicit-and-other-gc-mean-in-android-logcat 


반응형
,