关于full GC和Major GC

来源:7-2 Java垃圾回收之回收算法

qq_终点站丶前方_0

2019-01-22

在用标记-清除算法的时候,会出现垃圾碎片,那当分配大对象导致没有那么大的连续内存空间的时候,就会触发Full GC , 这里的Full GC是如何处理这些不连续的内存空间以保证可以分配该大对象呢?
同时Major GC在视频中出现的很突兀,针对全堆进行垃圾收收集是Full GC ,那只针对老年代的垃圾收集又是叫什么呢?

写回答

1回答

翔仔

2019-01-22

同学好,首先,如果是标记-清除算法,并不会进行碎片整理,所以课程里讲到,  如果你的应用程序对停顿比较敏感,并且在应用程序运行的时候可以提供更大的内存和更多的CPU(也就是硬件牛逼),那么使用CMS来收集会给你带来好处。如果碎片太多空间不足,就会一直显示正在处理垃圾,进入死循环值到OutOfMemory导致系统崩溃。

其次,我Major GC并不突兀,视频里说的"

当触发老年代的垃圾回收的时候通常也会伴随着对新生代堆内存的回收,即对整个堆进行垃圾回收,这便是所谓的FullGC。Major GC通常是跟full GC是等价的,即收集整个GC堆。但因为HotSpot VM发展了这么多年,外界对各种名词的解读已经完全混乱了,当有人说“major GC”的时候一定要问清楚他想要指的是上面的full GC还是仅仅针对老年代的 GC。"已经解释得比较清楚了:)

1
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程