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

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

  • 16字节的对象开销

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

  • 4个填充字节

我想请教的是:

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(3)
左手右手慢动作
  1. 16바이트는 Object Header입니다. Mark word, Class 유형 정보를 포함합니다... (16바이트는 64비트 시스템의 크기이며 포인터 압축이 활성화되지 않음)

  2. HotSpot의 정렬은 8바이트 정렬입니다. 최종 크기가 8바이트의 배수가 아닌 모든 개체는 채워집니다.

Ty80

객체 오버헤드에는 객체의 기본 정보가 포함되며, 패딩 바이트는 바이트 수를 채우는 데 사용됩니다. 객체가 차지하는 바이트는 8바이트의 배수여야 합니다.

大家讲道理

다음은 무책임한 추측일 뿐입니다.
Integer는 Object를 생성할 때 먼저 Object를 생성해야 합니다. 이때 객체 오버헤드는 8바이트가 빈 객체이고 4워드입니다. 섹션은 객체 참조이지만 Java의 바이트 할당은 8 단위이므로 여기서는 16바이트를 사용하고 쓸모 없는 바이트를 패딩 바이트라고 합니다.
아래 패딩 바이트는 동일합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿