虚拟机内存中数据细节
2023-09-14 09:00:30 时间
虚拟机内存中数据细节
- 如何创建?
- 如何布局?
- 如何访问?
如何创建?
语言层面:创建对象仅仅是一个new关键字而已。
虚拟机中:
1 检查指令的参数是否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否被加载,解析,初始化;
2 虚拟机为新生对象分配内存.
如何布局?
分为3个区域:
对象头
实例数据
对其填充
对象头:
分为2部分:
1、用于存储对象自身的运行时数据(hashCode,GC分代年龄,锁状态标志,线程持有的锁,偏向线程的id,偏向时间戳等)。
2、类型指针,对象指向它的类元数据的指针,虚拟机通过该指针确定对象是那个类的实例。
如何访问?
1、使用句柄访问,java堆会分分配一块内存作为句柄池,reference中存储就是对象的句柄地址,句柄包含对象实例数据与类型数据各自的具体地址信息。
优点:reference存储稳定的句柄地址,对象移动至改变实例数据指针,不会影响reference本身。
2、直接使用指针访问,java堆对象布局中就必须考虑如何放置访问类型数据相关信息,而reference中存储的直接是对象地址。
优点:速度快,节省一次指针定位的时间开销
相关文章
- JVM内存与垃圾回收篇第3章运行时数据区概述及线程
- 使用内存映射加快PyTorch数据集的读取
- matlab interp1db,matlab – Matlab interp1图出现数据偏移 – 堆栈内存溢出
- MemLibrary 内存 加载DLL DELPHI
- 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★
- 【C 语言】指针数据类型 ( 指针类型变量 | 使用 * 操作内存 )
- 关于Spark 1.5 版本中Spark自己管理内存而不是由Java管理内存的解释详解大数据
- Apache Arrow 内存数据详解大数据
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)详解编程语言
- 探索Linux系统物理内存情况(查看linux物理内存)
- 分析分析Linux系统中ps命令的内存使用情况(linuxps内存)
- 利用Redis提升数据存储性能(redis内存数据库)
- 查看 Linux 系统中进程和用户的内存使用情况
- Android调试器爆漏洞,可获取设备内存数据
- 如何保存/恢复Java应用程序核心内存数据现场?
- 如何使用 Redis 内存快照功能,保障数据的安全与备份?(redis内存快照)
- Linux mtrace: 实现系统内存跟踪的利器(linuxmtrace)
- Oracle内存优化从估算到开启之旅(oracle 内存估算)
- Oracle内存与磁盘掌握数据存储从性能开始(oracle 内存与磁盘)
- 如何快速掌握Redis的内存使用情况(怎么查看redis的内存)
- 查内存查看Redis的内存使用情况怎样才能快速安全地完成(怎么查redis热可以)
- 清理Redis释放内存中的潜能(清redis数据)
- 32G内存MySQL助力数据快速存取(32g内存 mysql)
- Redis浩瀚存储空间,支撑大数据神迹(数据库redis内存)
- 数据存储抉择内存与 Redis(数据存内存跟redis)
- 优化Redis集群内存调优法则(redis集群内存设置)
- asp自带的内存缓存application
- PHP查询MySQL大量数据的时候内存占用分析
- android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)