jvm虚拟机
2023-04-03 21:58:53 0 举报
jvm相关的笔记
作者其他创作
大纲/内容
Callable 接口
V call() throw Exception
真正存储的有效信息,如父类继承的字段,子类的字段
实现
等待内核缓冲区数据
font color=\"#f44336\
RunnableFeature 接口
+ operation1(params):returnType- operation2(params)- operation3()
复制数据到用户缓冲区
阻塞
偏向锁
java栈中的reference类型数据,指向对象的引用 -- 句柄
数据段,进程的操作数据在内存中的位置,包含数据集
内核空间
对象类型数据
进程的资源信息
用户空间
Parallel Scavenge吞吐优先收集器多线程并行收集器复制算法
可读连接
对象类型数据:存储Object对象类型数据(对象类型,父类,实现的接口,方法等)
进程的上下文
IO多路复用
java堆存储 Object 类型所有实例数据的结构化内存,长度不固定。对象类型数据的地址信息
到对象实例数据的指针
返回调用
Hotspot虚拟机,对象在堆内存储布局
进程的描述信息
同步阻塞IO
实例数据
到对象类型数据的指针
方法区
FeatureTask 类
private Callable<V> callable;private Object outcome; //记录调用结果
FeatureTask(Callable callable)V get(); // 返回 outcome 信息
非阻塞
填充对齐
非阻塞做其他事
线程刚创建,没有任何线程竞争, 偏向锁标识位0, 锁状态01
一个线程访问
jvm 使用CAS将锁对象Mark word替换为抢锁线程的锁记录指针失败,轻量级锁就膨胀为 重量级锁。后面等待线程进入阻塞状态
Feature 接口
ParNew多线程并行收集器。视为Serial的多线程版本复制算法
程序段(代码段),进程的程序指令在内存中的位置,包含指令集
句柄池
对象的实例数据:存储 Object 类型所有实例数据的结构化内存,长度不固定
synchronized锁升级
一个线程访问时,jvm检查MarkWord的偏向锁是否为0,锁状态是否01,若是满足条件,当前锁是可偏向状态,jvm检查MarkWord中记录的线程ID是否为当前线程,若是,该锁为偏向锁。若不是,就通过CAS竞争锁,竞争成功,将MarkWord中的线程ID更新为抢锁线程ID,偏向标志位1,锁标志位01,执行临界区代码,此时锁为偏向锁
read 调用
异步IO
注册select
read调用
程序控制块PCB
read1调用
并非必须,仅仅起占位符的作用
readN调用
Runnable 接口
+ abstract void run()
进程的调度信息
G1将连续的java堆划分多个大小相等的独立区域region。优先回收垃圾最多区域收集器全局:“标记-整理”算法局部(两个region之间)基于“标记-复制”算法
CMS最短回收停顿为目标的收集器并发-标记-清除收集器(并发低停顿收集器)标记清除算法
实例池
轻量级锁
重量级锁
无锁
=
Serial Old(MSC)单线程收集器,CMS失败后的备用预案标记整理算法
read2调用
方法区存储Object对象类型数据(对象类型,父类,实现的接口,方法等)
实例池:存储 Object 类型所有实例数据的结构化内存,长度不固定
new Object()
若对象为数组时,记录数组长度
多线程竞争激烈CAS自旋超过阈值
Object obj
Tenured generation老年代
完成通知
继承
同步非阻塞IO
对象头
Parallel Old多线程并发收集标记整理算法
java堆
类型指针,指向它的类型元数据的指针,虚拟机通过该指针确认对象是哪个类的实例不是所有虚拟机实现都有类型指针
进程
Young generation 新生代
一旦其他线程竞争
对象的实例数据
java栈中的reference类型数据,指向对象的引用 -- 直接指针
Hotspot JVM1.6垃圾收集器
0 条评论
下一页