java - 整数的封装对象中的对象开销和填充字节是什么东东
PHP中文网
PHP中文网 2017-04-18 09:55:50
0
3
399

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

  • 16字节的对象开销

  • 4字节用于保存它的int值

  • 4个填充字节

我想请教的是:

  • 什么对象开销?16字节里面究竟存储着什么?

  • 填充字节又是什么?它里面存储着什么?

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(3)
左手右手慢动作
  1. 16 バイトは Object Header であり、Mark wordClass 型情報を含みます... (16 バイトは 64 ビット システムでのサイズであり、ポインター圧縮は有効ではありません)

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

いいねを押す +0
Ty80

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

いいねを押す +0
大家讲道理

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!