1、JVM
2021-03-30 13:37:11 0 举报
AI智能生成
jvm
作者其他创作
大纲/内容
线程
虚拟机线程
周期性任务线程
gc线程
编译器线程
信号分发线程
JVM内存
线程私有
虚拟机栈
生命周期和线程相同
一个线程中,调用一个方法创建一个栈帧
栈帧的结构
本地变量表
操作数栈
对运行时常量池的引用
异常
线程所申请的栈深度大于jvm所允许的
若jvm允许动态扩展,若无法申请到足够的内存
本地方法栈
异常
线程所申请的栈深度大于jvm所允许的
若jvm允许动态扩展,若无法申请到足够的内存
程序计数器
指向虚拟机字节码指令的位置
唯一一个没有OOM的内存区域
线程共享
方法区,也叫永久代,元空间
运行时常量池
GC 不会在主程序运行期对永久区域进行清理
堆
新生代 1/3 Minor GC 复制算法 复制-清空-互换
eden 8/10
from survivor 1/10
to survivor 1/10
老年代 2/3
MajorGC 标记整理算法
异常
OutOfMemoryError
直接内存
JVM GC
gc做三件事
哪些内存要清理
引用计数法 【循环引用的问题】
根搜索法,可达性分析
gc roots作为起点,向下搜索,当一个对象到任何根没有引用相连,说明已经死亡
GC Roots
VM栈中的引用
方法区中的静态引用
JNI中的引用
什么时候清理
怎么清理
gc 算法
复制 【浪费空间】
标记清除 【效率低,内存碎片多】
标记整理
分代收集 【大部分JVM所采用的算法】
垃圾收集器
Serial
单线程、复制算法
ParNew
Serial+多线程
Parallel Scaveneg
多线程复制算法、高效
Serial Old
单线程标记整理算法
Parallel Old
多线程标记整理算法
CMS
多线程标记清除算法
类加载机制
加载
验证
准备
解析
初始化
使用
卸载
0 条评论
下一页