虚拟机内存中数据细节-阿里云开发者社区

开发者社区> 西北野狼> 正文

虚拟机内存中数据细节

简介: 虚拟机内存中数据细节 如何创建? 如何布局? 如何访问?   如何创建? 语言层面:创建对象仅仅是一个new关键字而已。 虚拟机中:   1 检查指令的参数是否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否被加载,解析,初始化;   2 虚拟机为新生对象分配内存. 如何布局? 分为3个区域:   对象头   实例数据   对其填充   对象头: 分为2部分:   1、用于存储对象自身的运行时数据(hashCode,GC分代年龄,锁状态标志,线程持有的锁,偏向线程的id,偏向时间戳等)。
+关注继续查看

虚拟机内存中数据细节

  • 如何创建?
  • 如何布局?
  • 如何访问?

 

如何创建?

语言层面:创建对象仅仅是一个new关键字而已。

虚拟机中:

  1 检查指令的参数是否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否被加载,解析,初始化;

  2 虚拟机为新生对象分配内存.

如何布局?

分为3个区域:

  对象头

  实例数据

  对其填充

 

对象头:

分为2部分:

  1、用于存储对象自身的运行时数据(hashCode,GC分代年龄,锁状态标志,线程持有的锁,偏向线程的id,偏向时间戳等)。

  2、类型指针,对象指向它的类元数据的指针,虚拟机通过该指针确定对象是那个类的实例。

如何访问?

  1、使用句柄访问,java堆会分分配一块内存作为句柄池,reference中存储就是对象的句柄地址,句柄包含对象实例数据与类型数据各自的具体地址信息。

  优点:reference存储稳定的句柄地址,对象移动至改变实例数据指针,不会影响reference本身。

  

  2、直接使用指针访问,java堆对象布局中就必须考虑如何放置访问类型数据相关信息,而reference中存储的直接是对象地址。

  优点:速度快,节省一次指针定位的时间开销

  

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
实时数据库、内存数据库、关系型数据库之间的对比
内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存中,在内存中模仿建立表结构和索引结构并针对内存特性进行优化,相比从磁盘上访问,内存数据库访问较快。
151 0
Java虚拟机:内存管理与执行引擎
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaobryant/article/details/79697073 一、Jav...
1390 0
致敬 hacker |盘点内存虚拟化探索之路
内存虚拟化相比裸机,仍然存在较大差异,是当下值得关注的问题!
22 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12036 0
内存数据库
        内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10
1248 0
+关注
西北野狼
擅长Android ,J2EE开发 博客园地址:http://www.cnblogs.com/androidsuperman/p/7834762.html github地址: https://github.com/soyoungboy
463
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载