JAVA对象内存布局 以及对象定位
1、Java对象内存布局
在hotSpot虚拟机中,对象在内存中的布局可以分成对象头、实例数据、对齐填充三部分。
对象头:对象头包含两部分,第一部分主要包括对象自身的运行行元数据,比如哈希码、GC分代年龄、锁状态标志等;第二部分包含一个类型指针,指向类元数据,表明该对象所属的类型
实例数据:它是对象真正存储的有效信息,包括程序代码中定义的各种类型的字段(包括从父类继承下来的和本身拥有的字段)
对齐填充:它不是必要存在的,仅仅起着占位符的作用
2、对象的访问方式
目前比较主流的访问方式有使用句柄和直接指针两种。
句柄方式:它将java堆划分出一块内存来作为句柄池,结构如图所示:
这种方式的优点就是reference中存储的是稳定的够本地址,在对象移动时只需要改变句柄池中实例数据指针,而reference本身不需要修改
直接指针方式:
转自:http://blog.csdn.net/lclansefengbao/article/details/37725131