博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚拟机内存中数据细节
阅读量:6290 次
发布时间:2019-06-22

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

虚拟机内存中数据细节

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

 

如何创建?

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

虚拟机中:

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

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

如何布局?

分为3个区域:

  对象头

  实例数据

  对其填充

 

对象头:

分为2部分:

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

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

如何访问?

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

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

  

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

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

  

 

转载地址:http://yiuta.baihongyu.com/

你可能感兴趣的文章
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>