JVM自动内存管理
2021-02-08 20:11:37 0 举报
jvm内存管理
作者其他创作
大纲/内容
本地方法库
操作数栈
虚拟机栈
程序计数器Program Counter Register
运行时数据区 Runtime Data Area
对象hash,对象年龄分代
解析
指向锁记录的指针
是否偏向锁
空不需要记录信息
局部变量表
4bit
堆Heap
存放了编译期可知的各种Java虚拟机基本数据类型(boolean、byte、char、short、int、 float、long、double)、对象引用(reference类型,它并不等同于对象本身,可能是一个指向对象起始 地址的引用指针,也可能是指向一个代表对象的句柄或者其他与此对象相关的位置)和returnAddress 类型(指向了一条字节码指令的地址)
动态链接
对象分代年龄
使用
无锁状态
所有线程共享数据区
本地库接口
JDK1.7+
甚至有的Java虚拟机(譬如Hot-Spot虚拟机)直接 就把本地方法栈和虚拟机栈合二为一
内存间原子操作:1.lock(锁定):作用于主内存,把一个便令标识为一条线程独占状态2.unlock(解锁):作用于主内存,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他变量锁定3.read(读取):作用于主内存,把一个变量值从主内存传输到线程的工作内存,以便随后的load动作使用4.load(载入):作用于工作内存,把read操作从主内存中得到的变量值放入工作内存的变量副本中5.use(使用):作用于工作内存,把工作内存中的变量值传递给执行引擎,每当虚拟机遇到一个需要使用变量的值的字节码指令时就会执行这个操作6.assign(赋值):作用于工作内存,把一个从执行引擎接收的值赋给工作内存的变量,每当虚拟机遇到一个变量赋值的字节码指令就会执行这个操作7.store(存储):作用于工作内存,把工作内存中的一个变量值传递到主内存中,一遍后续的write使用8.write(写入):作用于主内存,把store操作从工作内存中得到的变量值放入主内存的变量中
方法区
重量级锁
2bit
锁标志位
常量
执行重量级锁的指针
即时编译器编译后的代码
虚拟机栈JVM Stack
GC标记
本地方法栈Native Method Stack
1bit
加载
23bit
线程隔离数据区
初始化
方法出口
执行引擎
方法区Method Area
连接
11
验证
栈帧
静态变量
10
00
准备
01
JDK1.6
锁状态
偏向锁
轻量级锁
25bit
类型信息
1
Epoch
卸载
java内存模型
线程Id
0 条评论
下一页