主流的有两种方式:使用句柄、直接指针。具体的取决于虚拟机实现
各有优势。
使用句柄:在GC垃圾回收中,整理移动对象时,不需要修改对象数据中的指针内容。只要改变reference
的指针地址
直接指针:节省一次指针定位的时间。因此访问对象是相当频繁的,积少成多。
对象的内存分布:
-
对象头。主要保存:运行时数据,比如:哈希吗,GC分代年龄等。如果是
直接指针
方式,还会保存类型指针
-
实例化数据:无论是从父类继承的还是本身的都保存在这
-
对齐填充:占位符,由于要求对象大小是8字节倍数,因此这里作为填充
小结:对象的类型指针并不要求保存在对象数据中,主要取决于虚拟机的对象的访问定位
方式
来源:oschina
链接:https://my.oschina.net/u/3870422/blog/3220473