垃圾回收机制及类加载
2020-09-07 10:02:07 0 举报
JVM垃圾回收机制及类加载机制
作者其他创作
大纲/内容
复制
自定义类加载器userDefine ClassLoader
Eden区(8/10)
MinorGC的过程(复制算法)
启动类加载器BootStrap ClassLoader
新生代(1/3的堆内存)
Par New收集器(多线程)关注点:缩短垃圾收集时间
Age>=15
堆内存
清空Eden、servivorFrom中的对象
servivorTo(1/10)
双亲委派模式:加载一个类,先找爹,爹有爹加载,没有儿子加载
创建的新对象占用内存过大,直接放入老年区
复制算法
应用类加载器Application ClassLoader
CMS收集器(多线程)关注点:吞吐量
加载查找并加载类的二进制数据
老年版
创建的新对象都在这个区域,经常会触发MinorGC进行回收
Serial收集器(单线程)
互换
标记整理算法
准备在方法区中给类分配空间
新生代回收器
保留一次MinorGC的幸存者
MajorGC的过程(标记清除算法)
老年代回收器
老年代(2/3的堆内存)
Parallel Scavenge收集器(多线程)关注点:吞吐量
永久代和元空间
验证确保类加载的正确性
永久代:保存Class和Meta(元数据)信息,不会被GC,但存满后会OOM元空间:1.8之后取代永久代,不在虚拟机中,直接使用本地内存,加载类的多少由系统实际可用空间决定
清空
扩展类加载器Extention ClassLoader
解析把类中的符号引用转化为直接引用
servivorTo和servivorFrom互换
Serial Old收集器(单线程)
类的加载过程
初始化对类变更进行初始化
servivorFrom(1/10)
初始标记并发标记重新标记并发清理
首先扫描老年代,标记出存活对象,回收未标记的对象,执行过程中会产生内存碎片,会进行合并或标记,以便下次使用
把Eden、servivorFrom存活的对象复制到servivorTo中去以下两种情况,需要扔到老年区:1、对象年龄达到老年代要求2、servivorTo空间不足
标记清除算法
Parallel Old收集器(多线程)关注点:缩短垃圾收集时间
上一次GC的幸存者,这次GC的被扫描者
收藏
收藏
0 条评论
下一页