2021年02月22日JVM-1
自动内存管理,
自动内存管理
运行时数据区
-
线程独享
-
虚拟机栈
-
本地方法栈
-
程序计数器
-
-
线程共享
-
方法区
-
堆
-
分配空间方式
-
指针碰撞
-
TLAB
-
-
空闲列表
对象的内存布局
-
对象头
-
实例数据
-
对其填充
对象的访问定位
-
直接指针
-
HotSpot
-
-
使用句柄
垃圾收集器和内存分配策略
对象已死?
-
引用计数法
-
很难解决对象之间的相互引用问题
-
-
可达性分析
-
本地变量表中引用的对象
-
静态属性引用的对象
-
-
JNI中引用的对象
-
虚拟机中内部的引用
-
同步锁持有的对象
-
反映java虚拟机内部情况的JMXBean等
-
引用
-
强引用
-
软引用
-
弱引用
-
虚引用
⭐作业1举例说明这几个引用
⭐垃圾收集算法
-
分代收集理论
-
跨代解决
-
记忆集
-
-
标记复制
-
流程
-
实现简单,运行高效
-
浪费空间
-
Eden 和survivor区 8:1
-
-
标记整理
-
移动对象比较消耗时间
-
得到一个规整的内存
-
-
标记清除
-
执行效率不稳定
-
空间碎片化问题
-
HotSpot算法实现(简单有所了解即可)
想要更往前的冲击,还是要了解的
-
OopMap
-
用来枚举根节点的
-
-
安全点
-
抢先式中断
-
主动式中断
-
从这个点遍历OopMap用的
-
-
安全区域
-
在这个区域内的线程只能等待遍历Oopmap结束才能出来,同时遍历OopMap不需要考虑在安全区域的线程
-
-
记忆集与卡表
-
用来解决跨带引用的
-
-
三色标记
-
原始快照
-
g1 Shenandoah
-
-
增量更新
-
-