看到书里有这么一段话:
一个Integer对象会使用24字节,其中分别是:
16字节的对象开销
4字节用于保存它的int值
4个填充字节
我想请教的是:
什么对象开销?16字节里面究竟存储着什么?
填充字节又是什么?它里面存储着什么?
ringa_lee2017-04-18 09:57:50
16바이트는 Object Header
입니다. Mark word
, Class
유형 정보를 포함합니다... (16바이트는 64비트 시스템의 크기이며 포인터 압축이 활성화되지 않음)
HotSpot의 정렬은 8바이트 정렬입니다. 최종 크기가 8바이트의 배수가 아닌 모든 개체는 채워집니다.
PHP中文网2017-04-18 09:57:50
객체 오버헤드에는 객체의 기본 정보가 포함되며, 패딩 바이트는 바이트 수를 채우는 데 사용됩니다. 객체가 차지하는 바이트는 8바이트의 배수여야 합니다.
大家讲道理2017-04-18 09:57:50
다음은 무책임한 추측일 뿐입니다.
Integer는 Object를 생성할 때 먼저 Object를 생성해야 합니다. 이때 객체 오버헤드는 8바이트가 빈 객체이고 4워드입니다. 섹션은 객체 참조이지만 Java의 바이트 할당은 8 단위이므로 여기서는 16바이트를 사용하고 쓸모 없는 바이트를 패딩 바이트라고 합니다.
아래 패딩 바이트는 동일합니다.