9

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

4

3 に答える 3

12

オーバーヘッドを直接取得することはできません。オーバーヘッドの量は実装に依存し、多くの要因 (正確な JVM バージョン、および 32 ビットと 64 ビットのどちらの JVM を使用しているかなど) によって異なります。

ただし、HotSpot などの一般的な最新の JVM 実装では、オブジェクトあたりのオーバーヘッドは8 ~ 16 バイトであると想定するのが合理的に安全です。通常、配列には他のオブジェクトよりも 4 バイト大きいオーバーヘッドがあります (整数の配列の長さを格納するため)。

以下も参照してください。

于 2012-06-13T09:52:21.703 に答える
1

この記事はかなり参考になりましたが、表に記載されている値のいくつかに疑問がありました

于 2012-06-13T09:52:38.930 に答える