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

기기마다(API)마다 gc 호출방법이 다른가요??

0 추천

가벼운게임을 만들고있습니다

게임진행중에 죽는상황이 발생해서 해결해야하는상황인데

어플이 뻗어버린다는건 굉장히 빅이슈라 다른것은 다 제쳐두고 며칠째 이부분만 잡고끙끙대는중입니다 ㅜㅜ

구글링등 지식을 총동원해서 잡는와중에 궁금한게생기어 이렇게 질문을드립니다

게임중간에 뻗는다는건 메모리문제 일 확률이 크다고생각하고 로그켓을 주시하고있는데

같은게임상황이라도 단말마다 GC처리가 다르게 되는것입니다

현재 테스트폰은 넥서스7 , 아트릭스인데

넥서스7같은 경우에는

03-04 15:12:24.480: D/dalvikvm(30734): GC_FOR_ALLOC freed 3K, 18% free 12776K/15448K, paused 39ms, total 39ms
03-04 15:12:24.500: D/dalvikvm(30734): GC_CONCURRENT freed 8K, 18% free 12768K/15448K, paused 1ms+2ms, total 29ms

이렇게 처리를해주고

-------

아트릭스같은경우에는

 GC_EXTERNAL_ALLOC freed <1K, 45% free 3324K/6023K, external 5474K/6974K, paused 23ms

이렇게 처리를해주고있습니다

서치를 해보면 GC_FOR_ALLOC  이렇게 처리되는것이 gc속도가 빠르다고 되어있는데

실제로도 넥서스7은 뻗는경우가 거의없이 게임진행이되는상황이구요.. 물론 넥서스7 스펙이 더 좋아서그런걸지도,.

 

같은상황이라도 gc가 다르게되는거보면 내부적으로 뭔가 처리방식이 다른건가요?

혹시 이것이 도중에 뻗는것과 관련이있을까하여 여쭈어봅니다

 

 

 

레드오션 (1,310 포인트) 님이 2013년 3월 5일 질문

2개의 답변

0 추천
 
채택된 답변
GC가 만능이 아닙니다... GC를 한다고 해서 메모리를 무조건 확보하는게 아니라

사용하지 않는 값들에 대해 메모리 해제를 해주는겁니다.

코드상에서 계속 사용하는 값들이라던가

특히 이미지는 recycle처리를 해줘야 GC했을경우 메모리 해제가 됩니다.
익명사용자 님이 2013년 3월 5일 답변
레드오션님이 2013년 3월 26일 채택됨
0 추천
많은 분들이 오해 하시는 부분인데.....

gc를 호출한다고 해서 자바란 넘이 바로 gc를 실행 하지 않습니다.

gc는 그냥 자바에게

"아마도 지금쯤 gc를 해도 될껄??"

이라고 말해주는것 정도 밖에 안됩니다.

즉 지가 하기 싫음 안해버리죠~! ㅋ

도도한녀석이라... ㅋ

좀 안타까운 현실이지만 gc를 너무 믿지는 마시길....
익명사용자 님이 2013년 3월 5일 답변
...