导图社区 jvm运行时数据区知识思维导图
该思维导图对jvm运行时数据区知识整理,jvm在运行时会把它所管理的内存划分为几个不同的区域,这些区域包括方法区、虚拟机线、本地方法栈、堆、以及程序计数器。
这是一篇关于对象生命周期的思维导图,包括生命周期,引用类型,垃圾回收等方面内容,可供大家学习以及参考。
这是一篇关于JVM内存模型的思维导图,JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
这是一篇关于jvm类加载机制思维导图,jvm是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
社区模板帮助中心,点此进入>>
英语词性
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
民法分论
日语高考動詞の活用
jvm 运行时数据区
方法区
线程共享
虚拟机启动时创建
no-heap
存类信息、常量、静态变量、即时编译代码等
元空间
类信息
堆
静态变量
运行时常量池
基本类型常量池
字符串常量池
这里区分有点乱 方法区和堆有重叠 方法区中的类信息存放在元空间,非堆。而静态变量,基本类型常量池,字符创常量池属于堆的理解范畴,这里不过多深究
会抛出 OutOfMemoryException
对象堆上分配
垃圾回收主战场
启动时创建
分代管理
新生代
e区
两个s区
默认8:1:1
老年代
元空间,理解为方法区
对象内存模型
对象头
标记位Mark Word
hashcode(大端存储)
对象分代年龄
锁标记
Class Pointer 为直接访问存储方式时 存元空间中对应类的地址
Length 如果对象为数组时,存数组大小
实例数据
boolean和byte 1个字节
short和char 2个字节
int和float 4个字节
double 8个字节
64位系统 reference 8个字节
对齐填充(保障对象内存大小为8字节的整数倍,用空间换时间,8位long的能一次取,但是可能会有空间浪费)
引用场景
局部变量表指向堆 new Object()
方法区指向堆 static new Object()
堆指向方法区 每个对象存储了方法区中对应类的地址
Class Pointer存储方式
句柄池(GC之后不用调整句柄中的reference)
直接访问(少一次指针定位开销)
64位系统存在指针压缩特写,可通过 -XX:+UseCompressedOops 参数关闭指针压缩
程序计数器
线程独享
简单理解 存当前线程执行字节码指令地址,保障在线程竞争CPU的情况下,线程准确有序执行
当执行native时,为空
虚拟机栈
线程对象
处理java方法 和本地方栈区别
以栈帧为单位存储线程中执行的每个方法
先进后出
栈帧结构
局部变量表
操作数栈
动态链接
返回地址和信息
本地方法栈
特性、作用和虚拟机栈一致,区别是这个存native 方法