14

私はゲームを Android に移植しています (多くのコードがあり、私のものはほとんどありません)。DalvikVM は (LogCat を通じて) ガベージ コレクションについてすべて教えてくれます。コードのある時点で、「GC freed x objects / x ms」というメッセージのストリームが表示され、基本的に、約 150,000 個のオブジェクトが削除され、1 秒かかっていることが通知されます。

これらがどこから来たのか知りたいです!意図的にそれほど多くのオブジェクトを作成していないことは確かです。

それで、得る方法はありますか...基本的にそのメッセージの反対ですか?オブジェクトが作成されたときにログメッセージを出力するものはありますか?

そうすれば、コードをステップ オーバーして、生成されるメッセージの数を確認し、コードのどの部分がオブジェクトを生成しているかを確認できます。ループの一部で何らかの形のオブジェクト作成が行われていると思われますが、可能であれば、これは簡単に確認できる方法です。

関連する場合は、を使用してEclipse 3.4.2います。

何か案は?

4

2 に答える 2

8

これは、Android (Eclipse バージョンではない) に付属の ddms ツールを使用して可能です。それを使用して、割り当てトラッカータブを見てください。オブジェクトが割り当てられた場所のスタック トレースと共に、すべてのオブジェクトの割り当ての追跡を開始できます。ただし、このツールは大量の情報を生成する可能性があり、必要な特定の情報を解析したり見つけたりするのは必ずしも容易ではありません。Sun JVM のバージョンをお持ちの場合は、Kai が言及したツールを使用することをお勧めします。これらのツールは、はるかに開発されています。Android で行う必要がある場合は、割り当てトラッカーを使用すると開始できます。

于 2009-05-03T15:52:33.487 に答える