Java 5ではInstrumentationがオブジェクトのサイズを簡単に取得できるようになりました。 AndroidとDalvikにそのような方法がありますか?AndroidとDalvik - オブジェクトのサイズを取得
java.lang.instrument
パッケージはAndroidではご利用いただけません。
Java 5ではInstrumentationがオブジェクトのサイズを簡単に取得できるようになりました。 AndroidとDalvikにそのような方法がありますか?AndroidとDalvik - オブジェクトのサイズを取得
java.lang.instrument
パッケージはAndroidではご利用いただけません。
私はDalvik VMのソースコードを見てきましたが、オブジェクトのサイズを取得するための安定したAPIは見つかりませんでした。あなた自身を見たい場合は、オブジェクトのサイズはClassObject::objectSize : size_t
に格納されます。dalvik/vm/oo/Object.hを参照してください。
オブジェクトのサイズを取得するには、内部のAPIがあります。オブジェクトサイズに関する詳細情報を報告するためにDDMSによって使用されます。しかし、APIは内部的なものであるため、Androidのさまざまなバージョン間で変更される可能性があります。さらに、APIはraw byte[]
データを送信し、クライアント/サーバーベースであり、単純なライブラリ呼び出しではないため、使用するのが非常に面倒です。あなたが見てみたい場合は、dvmAllocObject()
のdalvik/vm/alloc/Alloc.cppとdvmTrackAllocation()
の呼び出しで開始してください。
Dalvik VMでオブジェクトのサイズを取得するために、残念ながら、すぐに使用できる安定したAPIはありません。
大当たりを当てる、dvmAllocObject関数ですnew演算子が使用されたときに呼び出されます。サイズについては、それは本当のこと、アプリのユーザーは、サイズを得ることができます。 –
この問題では、プログラマチックなアプローチではなく、www.eclipse.org/mat/のMemory Analyzer Tool(MAT)を使用する方が良いでしょう。Eclipse用のスタンドアロン版とプラグインの両方があります。これで、Dalvikヒープのスナップショットを作成して、オブジェクトのサイズや、参照されるオブジェクトのサイズ(保持サイズ)によってオブジェクトのリストを並べ替えることができます。私はビットマップキャッシュリークのトラブルシューティングにこれを使用しました。
彼は実行時に**オブジェクトのサイズを計算する方法を探しています**。 –
私が提案した解決策は、実行時に正確に動作します。 – WindRider
int length =processes.size();
は、オブジェクトのサイズを返します。
**どのタイプが**プロセス**ですか?これはあまり役に立ちません。 –
上記の質問に答えていない – milosmns
あなたはプロセスがArrayListなのかと思っていますね。 –
http://www.javapractices.com/topic/TopicAction.do?Id=83 – slayton
見た目が悪いハックのように見えます...私はサムエルの答えに行ってきました。 –
ちょうど好奇心が強い...それを必要とする実際のユースケースは何ですか? –