検索

ホームページ  >  に質問  >  本文

java - 整数的封装对象中的对象开销和填充字节是什么东东

看到书里有这么一段话:
一个Integer对象会使用24字节,其中分别是:

我想请教的是:

PHP中文网PHP中文网2810日前433

全員に返信(3)返信します

  • ringa_lee

    ringa_lee2017-04-18 09:57:50

    1. 16 バイトは Object Header であり、Mark wordClass 型情報を含みます... (16 バイトは 64 ビット システムでのサイズであり、ポインター圧縮は有効ではありません)

    2. HotSpot のアライメントは 8 バイト アライメントです。最終サイズが 8 バイトの倍数でないすべてのオブジェクトは埋められます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:57:50

    オブジェクトのオーバーヘッドにはオブジェクトの基本情報が含まれており、パディングバイトはバイト数を埋めるために使用されます。オブジェクトが占めるバイトは 8 バイトの倍数である必要があります。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:57:50

    以下は単なる無責任な推測です:
    Integer を構築する場合、最初に Object を構築する必要があります。このときの 8 バイトは空のオブジェクトと 4 つのワードです。セクションはオブジェクト参照ですが、Java のバイト割り当ては 8 単位なので、ここでは 16 バイトが使用され、無駄なバイトはパディングバイトと呼ばれます。
    以下のパディングバイトは同じです。

    返事
    0
  • キャンセル返事