jvm指针压缩

系统分为32和64位。32位可以寻址2^32,也就是4g的内存大小。所以32位的机,你就算给8g内存,也没有多大用处。64位的机,可想寻址会很大。

1.压缩

对于jvm,默认是按8字节对齐的。

对于虚拟机,不开起指针压缩,一个对象,定义一个成员变量int类型,对象头中的markword是8个字节,类型指针是8个字节,没有数组的话,数组长度0个字节。实例数据int 4个字节,padding补4个字节,总24,是8的倍数。

开起指针压缩,类型指针是4个字节,总16字节,不用对齐padding。

2.原理

对于32位机,地址0x1,0x2,..可以寻址到2^32

对于64位,如果8个字节为寻址宽度呢0x1000,0x2000。会发现是补了000。

那么2^32是在堆中的存储,在寄存器中可以补位000,变为2^35。大概32g

所以超过了32,其实大约31g,指针压缩会失效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值