私はAndroidでアプリケーションを開発しています。センサーデータを連続的に処理する、長時間実行されるアプリケーションです。アプリケーションを実行している間、私はlogcatに多くのGCメッセージを表示します。毎秒約1回。Dalvik GCの動作を分析するには?
これは、オブジェクトが作成され、ループ内ですぐに参照解除されるためです。
どのオブジェクトを作成してすぐにリリースするのかをどのように見つけることができますか?
私が試した(*)すべてのJavaヒープ解析ツールは、ヒープ上のオブジェクトの数とサイズに悩まされます。それらは便利ですが、
一時的な
短命オブジェクトが最も多く作成されるサイトを見つけることにもっと興味があります。
(*)私はjcat
とEclipse MAT
を試しました。私はhat
をAndroidヒープダンプで動かすことができませんでした。それはサポートされていないダンプファイルのバージョンを訴えました。
重投稿:コードを変更せずに割り当てトラッカーを実行していない理由は\?(少なくとも最初の) –
@Pedro Loureiro:まず、問題のループの外で多くの割り当てを行うと、割り当てリストは本当に長くなる可能性があります。第2に、ループそのものが、リストを管理するのに不可能なほど長くなる可能性があります。コードの関連するセグメントに1回のパスを分けると、データを理解するのが最も簡単になります。しかし、あなたのコメントは何かを私に思い出させてくれました。私は答えに瞬間的に追加していきます... – CommonsWare
割り当てトラッカーへのポインタありがとう。完全にそれを逃していた。 Btwは、Eclipse統合(ADT)でドキュメントが利用できないと言っています – HRJ