博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二、在java中,对象是如何访问的呢? --- 对象的访问
阅读量:7072 次
发布时间:2019-06-28

本文共 435 字,大约阅读时间需要 1 分钟。

 

如下一句代码:

  Object obj = new Object();

 

可以用一图表明:对象的引用放到了栈 里,对象的实例存储在堆里。

 

引用类型只规定了一个指向对象的引用。那它是如何通过这个引用找到在java堆中对象的实例呢?

 

不同的虚拟机有不同的方式。主流的有两种:

 使用句柄

 

在java堆中开辟了一块内存作为句柄池。reference 类型存储的是对象的句柄地址,

句柄中包含了对象实例的指针。

 

直接使用指针

 

 

 

可以看到的是reference 中直接就存储了对象的地址。

 

 

各自的优势比较:

 

  一、句柄方式最大的好处就是在对象改变位置的时候(这种情况在垃圾回收时是常有的),reference的句柄地址不需要改变。只会更改句柄的对象实例的指针。

二、直接使用指针最大的好处就是速度更快。因为它可以一步定位到实例对象。

 

就大范围使用情况来说,直接使用指针的方式是十分常见的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/pan2011/p/3577143.html

你可能感兴趣的文章
possible SYN flooding on port 80. Sending cookies
查看>>
【CISCO技术】GRE-虚拟专用网络(静态)
查看>>
用mysql自带工具mysqlslap对数据库进行压力测试
查看>>
js 浏览器和pc 客户端判断
查看>>
评《GIT和SVN之间的五个基本区别》
查看>>
我的友情链接
查看>>
SEO的核心思想
查看>>
泛域名Wildcard Domain
查看>>
PHP基于FastCGI模式与httpd通信
查看>>
Spring对于注解的扫描
查看>>
微软自带的ftp和web服务器的搭建
查看>>
Visual Studio 2012 简体中文版新功能介绍及官方下载地址
查看>>
extjs 调用金税COM接口
查看>>
某服务器RAID5阵列数据恢复方案及过程
查看>>
Linux下socket编程
查看>>
从零开始完整搭建LNMP环境+WordPress部署
查看>>
windows服务器内存泄露--事件ID2019
查看>>
UML学习笔记(1)之用例图,类图与对象图
查看>>
第八章命令行操作基础
查看>>
spark资源分配
查看>>