wangzhenhui1991 / Notes

3 stars 0 forks source link

JVM:垃圾回收(GC 在什么时候,对什么东西,做了什么事情) #10

Open wangzhenhui1991 opened 7 years ago

wangzhenhui1991 commented 7 years ago

垃圾回收需要搞清楚 在什么时候,对什么东西,做了什么事情。

在什么时候

首先需要知道,GC又分为 minor GCFull GC (也称为 Major GC )。 Java 堆内存分为

那么对于 Minor GC 的触发条件:

在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。

但是,具体到什么时刻执行,这个是由系统来进行决定,是无法预测的。

对什么东西

主要根据可达性分析算法

对于可达性分析算法,它是通过一系列称为“GC Roots” 的对象作为起始点,当一个对象到 GC Roots 没有任何引用链相接的时候,那么这个对象就是不可达,就可以被回收。如下图:

这个GC Root 对象可以是一些

做了什么事情

主要做了清理对象,整理内存的工作。Java堆分为新生代和老年代,采用了不同的回收方式。