마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

하아.. GC_FOR_ALLOC 이게 무슨 메시지인가요.

0 추천

어플 내에서 하는 작업이 꽤 메모리를 많이 먹는 작업입니다.

그래도 쓰레드 처리하고 돌아가게는 했는데, 문제가 생겼네요.

처음에는 꽤 빠른데, 같은 작업을 다시 한번 할경우 속도가 점점 느려집니다.

아래는 로그캣 내용인데요.

pointCount 는 돌아가는 거 보려고 돌때마다 증가되면서 뿌린거에요.

왜 갈수록 느려지는지 조언좀 부탁드려요 ㅠㅠ
 

03-26 15:37:37.576: I/dalvikvm-heap(12761): Grow heap (frag case) to 90.933MB for 16016-byte allocation
03-26 15:37:37.631: D/dalvikvm(12761): GC_FOR_ALLOC freed <1K, 5% free 92528K/96711K, paused 56ms, total 56ms
03-26 15:37:37.631: D/pointCount(12761): 1512
03-26 15:37:37.636: D/pointCount(12761): 1513
03-26 15:37:37.696: D/dalvikvm(12761): GC_FOR_ALLOC freed 44K, 5% free 92546K/96711K, paused 64ms, total 64ms
03-26 15:37:37.701: D/pointCount(12761): 1514
03-26 15:37:37.751: D/dalvikvm(12761): GC_FOR_ALLOC freed 23K, 5% free 92563K/96711K, paused 52ms, total 52ms
03-26 15:37:37.806: D/dalvikvm(12761): GC_FOR_ALLOC freed 17K, 5% free 92563K/96711K, paused 55ms, total 55ms
03-26 15:37:37.806: D/pointCount(12761): 1515
03-26 15:37:37.871: D/dalvikvm(12761): GC_FOR_ALLOC freed 56K, 5% free 92540K/96711K, paused 64ms, total 64ms
03-26 15:37:37.871: I/dalvikvm-heap(12761): Grow heap (frag case) to 90.958MB for 16016-byte allocation
03-26 15:37:37.926: D/dalvikvm(12761): GC_FOR_ALLOC freed <1K, 5% free 92555K/96775K, paused 54ms, total 54ms
03-26 15:37:37.926: D/pointCount(12761): 1516
03-26 15:37:37.926: D/pointCount(12761): 1517
03-26 15:37:37.981: D/dalvikvm(12761): GC_FOR_ALLOC freed 41K, 5% free 92574K/96775K, paused 52ms, total 53ms
03-26 15:37:37.981: D/pointCount(12761): 1518
03-26 15:37:38.046: D/dalvikvm(12761): GC_FOR_ALLOC freed 23K, 5% free 92591K/96775K, paused 63ms, total 63ms
03-26 15:37:38.101: D/dalvikvm(12761): GC_FOR_ALLOC freed 16K, 5% free 92591K/96775K, paused 56ms, total 56ms
03-26 15:37:38.101: D/pointCount(12761): 1519
03-26 15:37:38.166: D/dalvikvm(12761): GC_FOR_ALLOC freed 5K, 5% free 92607K/96775K, paused 63ms, total 64ms
 

시험모드 (970 포인트) 님이 2013년 3월 26일 질문
시험모드님이 2013년 3월 26일 수정

1개의 답변

0 추천
메모리를 요청하는데 남아있는 힙공간이 얼마 없기 때문에

쌓여있는 가비지들을 제거해서 여유 공간을 확보한다는 의미입니다.

가비지 컬렉팅 하는데 로그에 찍힌 ms 만큼의 시간이 계속해서 요구되는 거고요.

어떤 작업인지는 모르겠지만 로그로 봐서 메모리 릭이 나고 있거나

메모리 해제없이 계속해서 추가적으로 메모리를 요청하고 있기때문에

힙 사이즈는 계속 늘어나고, 언젠간 메모리 부족으로 죽을 수 있습니다.

힙 여유가 많지 않은 하위기종 단말에서는 바로 죽을 수도 있고요.

메모리를 많이 먹는 작업을 하신다면 세심한 메모리 관리가 필요합니다.
b22n (22,940 포인트) 님이 2013년 3월 26일 답변
흐음.. 그렇군요.
그러니까 강제로 예전 가비지들을 제거하느라고 시간을 잡는다 그말이군요..
하아.. 대용량 파일 처리 작업 힘드네요 ㅠㅠ
답변 감사합니다.
...