JVM内存管理-对象访问
来源:互联网 发布:邪恶网站源码 编辑:程序博客网 时间:2024/06/05 02:45
程序运行时,最基本的需要使用jvm中的栈、堆、方法区,这三部分内容。
栈,存放了方法所需要的局部变量等信息。
堆,存放了类的实例化数据(即对象)。
方法区,存放了类的相关信息(class文件的信息),比如父类、接口等信息。
以下段代码为例:
Object obj = new Object();
它对应的内存示例如下图所示:
以上部分是比较基础的,但是stack和heap和方法区之间是如何联系的呢?
由于JVM规范中,对引用类型的规定是只代表着一个对象实例的引用,并没有制定具体使用哪种方式去实现,因此,出现两种可能。一、句柄方式;二、直接引用。
1、句柄引用
句柄引用的方式,是通过在堆中增加一块句柄区域,栈中的数据指向句柄,句柄中包含了堆中实例的地址和方法区中class信息的地址。如下图所示:
2、直接引用
直接引用的方式去掉了句柄区域,直接在堆的对象实例区域中包含了一块执行方法区中class文件的地址。如下图所示:
sun的虚拟机实现的是第二种方式,实现第一种方式的也比较多。
两种方式的比较:
第一种方式若对象实例发生拷贝时,不需要改变栈中变量的指向,只需要改变句柄内存的指向即可。
第二种方式的优点是速度快,毕竟少了一个过程。
0 0
- JVM内存管理-对象访问
- JVM内存对象管理
- JVM对象的内存布局和访问
- JVM对象的创建、内存布局、访问
- JVM-内存管理及创建对象
- JVM对象的创建与内存管理
- 细说JVM系列:JVM对象的创建、内存布局、访问
- jvm读书笔记-2.3内存对象的创建、布局和访问
- JVM中的对象创建、内存布局和访问定位
- 【JVM学习】Java的家园----JVM内存区域分析与对象的内存分配和访问
- 解析Java对象引用与JVM自动内存管理
- JVM---对象访问
- [jvm]对象访问机制
- jvm 对象访问
- JVM 对象访问
- JVM - 对象访问
- JVM内存管理总结
- JVM内存管理
- XMPP客户端库Smack 4.0.6版开发之四
- 保存应用程序的配置信息
- 阿里云RDS文档概述——数据库管理
- 黑马程序员---OC类的本质
- 小米会倒在三个专利火枪手面前吗?
- JVM内存管理-对象访问
- 第十四周项目 oj平台二——国家排序
- XMPP客户端库Smack 4.0.6版开发之五
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(2)
- JDK1.6对脚本语言的支持(Mozilla Rhino)
- XMPP客户端库Smack 4.0.6版开发之六
- UNEXPECTED_KERNEL_MODE_TRAP(Ndu.sys) 蓝屏解决方案
- 安龙的朋友,我在伯牙网等你
- spring chat(二)