84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
看到书里有这么一段话:一个Integer对象会使用24字节,其中分别是:
16字节的对象开销
4字节用于保存它的int值
4个填充字节
我想请教的是:
什么对象开销?16字节里面究竟存储着什么?
填充字节又是什么?它里面存储着什么?
认证高级PHP讲师
16个字节是是Object Header,包括了Mark word,Class类型信息...(16个字节是64位系统上,并且没有开启指针压缩的大小)
Object Header
Mark word
Class
HotSpot的对齐方式是以8字节对齐,所有没有对象最终大小没有到8个字节的倍数的,都会被填充
对象开销中放着对象的基本信息;填充字节用来填充字节数的啊,对象占用的字节必须是8字节的倍数。
下面只是不负责任的猜测:Integer继承自Object,构造Integer的时候要先构造Object,对象开销就是这时候构造Object的开销,其中8个字节是空对象,4个字节是对象引用,但是Java里字节分配以8为单位,所以这里要用16字节,其中没用的字节叫填充字节。下面填充字节一样。
16个字节是是
Object Header
,包括了Mark word
,Class
类型信息...(16个字节是64位系统上,并且没有开启指针压缩的大小)HotSpot的对齐方式是以8字节对齐,所有没有对象最终大小没有到8个字节的倍数的,都会被填充
对象开销中放着对象的基本信息;填充字节用来填充字节数的啊,对象占用的字节必须是8字节的倍数。
下面只是不负责任的猜测:
Integer继承自Object,构造Integer的时候要先构造Object,对象开销就是这时候构造Object的开销,其中8个字节是空对象,4个字节是对象引用,但是Java里字节分配以8为单位,所以这里要用16字节,其中没用的字节叫填充字节。
下面填充字节一样。