地址、指针的大小和操作系统位数有关:32位操作系统指针大小为32个bit,也就是4个字节。64位操作系统为8个字节。
JVM
压缩指针
对于32位机器,进程能使用的最大内存是4G。如果进程需要使用更多的内存,需要使用64位机器。
对于Java进程,在oop只有32位时,只能引用4G内存。因此,如果需要使用更大的堆内存,需要部署64位JVM。这样,oop为64位,可引用的堆内存就更大了。
在堆中,32位的对象引用占4个字节,而64位的对象引用占8个字节。也就是说,64位的对象引用大小是32位的2倍。
由于HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说就是任何对象的大小都必须是8字节的整数倍。
2022年1月14日大约 2 分钟