bobuhiro11's diary

[Android]GC_CONCURRENT freedの対処法

29 Jan 2013
[Android] [CONCURRENT] [freed] [GC] [対処法]

Androidアプリで遊んでいたら,

logcat

こんな感じで,logcatに同じようなメッセージがガンガン出てきて,端末もフリーズしてしまった.

赤色のエラーメッセージとか,橙色のWarningとかは出てなかったのでちょっと分からなかった.

ググっても,あんまり出てこなかったので,書くことにしました.

[bash] GC_CONCURRENT freed <1K, 26% free 7093K/9479K, external 408K/517K, paused 3ms+9ms [/bash]

これは,ガベージコレクションが働いたときに出るメッセージです.このメッセージが短時間で,大量に出ていました.

次のようなことを示しています.

結局は,メインループ内でたくさんインスタンスの生成を行なっていたことが原因

情けない^_^;

ちなみに,eclipseにはDDMS(Dalvik Debug Monitor Service)というデバッガがあるのでそれを使うともうちょっと詳細に知れます.

[Eclipse]->[Window]->[Open Perspective]->[Other]->[DDMS]で開けます.

heap

デバッグしたいプロセスに緑の虫の印を付けて,”Heapタグ”とか”Allocation Trackerタグ”とかを眺めます.

“Heapタグ”では,ヒープの使用状況が,”Allocation Trackerタグ”ではメモリ上に配置されているオブジェクトと対応するコードの位置を見つけることができます.最近使うようになったので,これからちゃんと使えるようにならないとな.

 

ただ,実は今もエラーメッセージ一つも出さずにフリーズしたりしてる... ハードの方を疑いたくなる...

参考:

How to solve GC_concurrent freed? [closed]

メモリリークを発見!Androidアプリのメモリ解析手法


comments powered by Disqus < [Mac]androidアプリの開発環境 [Android]ぱずうぇいを公開してみた. >