Full GC详解(定义作用及触发过程)

Full GC详解(定义作用及触发过程)-mikechen

Full GC属于Java垃圾收集的重要内容,而且Java面试也常考,下面重点详解Full GC的作用与触发过程@mikechen

什么是Full GC

Full GC,全程是Full Garbage Collection,是Java虚拟机中的一种垃圾回收方式。

Full GC会在整个堆空间中执行垃圾回收,清理所有不再被引用的对象所占用的内存空间。

Full GC通常是在年老代空间或者整个堆空间被占满时触发的,它会清理所有的年老代对象和永久代对象。

 

Full GC作用

Full GC的作用是在JVM执行垃圾回收时对整个堆空间进行清理,释放不再被引用的对象所占用的内存空间,以便后续的对象分配。

 

触发FullGC

Full GC通常在以下情况下被触发:

1.堆空间不足

当堆空间的可用空间不足以分配新对象时,会触发Full GC,在这种情况下,Full GC会清理整个堆空间。

 

2.调用System.gc()方法

调用System.gc()方法可以触发Full GC,虽然调用System.gc()方法不能保证立即触发Full GC,但它可以提醒JVM尽快执行垃圾回收。

 

3.老年代空间满了

当老年代空间被占满时,也会触发Full GC。

如果老年代空间被占满,说明这些长时间存活的对象已经占用了大量的内存空间,需要进行Full GC来释放这些不再被引用的对象所占用的内存空间。

 

Full GC过程

Full GC是一种比较耗时的操作,因为它需要扫描整个堆空间,找到所有不再被引用的对象,并将它们标记为可回收的。

Full GC过程包括以下几个步骤:

1.标记(Mark)

从根节点开始遍历对象图,标记所有被引用的对象。

2.可达性分析(Reachability Analysis)

检查所有被标记的对象,如果它们的所有引用都被标记,那么它们是可达的,否则它们是不可达的。

3.清除(Sweep)

清除所有不可达的对象,释放它们占用的内存空间。

4.压缩(Compact)

将所有存活的对象移动到堆空间的一端,压缩内存空间,以便后续对象的分配。

以上就是Full GC的详解,更多JVM请查看:JVM(Java虚拟机)从0到1全部合集

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法