我爱编程

JVM知识点汇总

2018-05-10  本文已影响0人  择夕_

Loading(加载一个类的过程)

1.先说说classloader

具体是怎么实现的呢(源码可见Launcher.class)
向上委托

都先会判断上层是否已经加载过,加载过了之后就不再加载

2.Linking(运行数据区域)

加载完成后会进入

加载

3.运行数据区:

JVM

JVM GC过程

1.新建的对象都在Eden中创建

大的对象直接在Old中创建

如果Eden满了,则触发MinorGC

2.MinorGC

(这里有一个动态对象年龄的概念:不是每次都要求对象的年龄一定要超过-XX:MaxTenuringThreshold才晋升到Old,如果Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入Old)

3.FullGC

如果Old满了,触发FullGC
(CMS算法的整个过程可以并行执行,只需短暂暂停程序2次)
回收Old,如果回收后还是满了,则抛出OutOfMemoryError: Java heap space

4.方法区GC

方法区的垃圾回收(永久区的回收)jdk8里面是MetaSpace代替了方法区

YoungGC
GC简易流程
上一篇下一篇

猜你喜欢

热点阅读