2012-06-13 6 views
7

私はJavaを勉強しています。そのJavaオブジェクトのどこかを読んで、仮想マシンの管理上の理由からJVM内でオーバーヘッドが発生したことを覚えています。ですから、私の質問は、HotSpot JVMでオブジェクトの合計サイズを取得できるかどうか、またどのようにオーバーヘッドが来るかを教えてもらえますか?JVMのオブジェクトオーバーヘッドについて学ぶ

+0

が重複する可能性に言及した値のいくつかによって、this articleはむしろ有益ました[Javaでのオブジェクトのメモリ消費量は?](http://stackoverflow.com/questions/258120/what-is-the-memory-consオブジェクトのJavaでのumption) –

+0

あなたはhttp://stackoverflow.com/questions/258120/what-is-the-memory-consumption-of-an-object-in-javaを見ましたか? ? –

+0

私はまったく同じことを求めていません。オーバーヘッドと全体のサイズについて質問しているので、合計サイズに対するオーバーヘッドの割合を導き出すことができます。 – NlightNFotis

答えて

9

オーバーヘッドを直接取得することはできません。オーバーヘッドの量は実装に依存し、さまざまな要因(たとえば、JVMの正確なバージョン、32ビットまたは64ビットのJVM上であるかどうかなど)によって変化する可能性があります。

HotSpotのような典型的な現代的なJVM実装では、オブジェクトあたりのオーバーヘッドは、の間のであると仮定することは合理的に安全です。配列は通常、他のオブジェクトよりも4バイト大きいオーバヘッドを持ちます(整数配列長を格納するため)。

も参照してください:私はいくつかの疑問を持っていたものの、

1

が、私はテーブルの

+0

リンクのみで構成される回答は、一般的には推奨されません。 http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answersを参照してください。たぶんあなたは記事の関連部分を要約することができます。 – sleske

関連する問題