运行时Java对象在内存中的存储

Posted 飞鸟集

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行时Java对象在内存中的存储相关的知识,希望对你有一定的参考价值。

建立对象是为了使用对象,Java程序需要通过栈上的reference数据来操作堆上的具体对象。对象的访问方式,取决于虚拟机的具体实现。目前主要有句柄和直接指针两种。

句柄访问:

   在Java堆中划分一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。

    技术分享

    句柄访问的优势在于reference中存储的是稳定的句柄地址,对象被移动时只会改变句柄中的实例数据指针,而reference本身不需要修改。

直接指针访问:

    技术分享

    直接指针访问方式的最大好处是速度更快,它节省了一次指针定位的时间开销

以上是关于运行时Java对象在内存中的存储的主要内容,如果未能解决你的问题,请参考以下文章

Java中的内存

java中的内存分配

java虚拟机3.运行时内存异常

Java对象的内存布局以及对象的访问定位

java - 如何在java中的堆上单独获取所有对象消耗的运行时内存

java中的各种数据类型在内存中存储的方式