全垃圾回收 vs. 主要垃圾回收

6

我正在查看Oracle垃圾收集文档,对于以下特定段落有些困惑:

如果JVM发现某些类不再需要并且需要为其他类腾出空间,则可能会卸载(收集)这些类。永久代包含在完全垃圾收集中。

尤其是最后一句话,它说永久代包含在"完全垃圾收集"中,因为在此之前没有提到过"完全垃圾收集",只有minor和major垃圾收集。

那么,完全垃圾收集是另一个垃圾收集器,还是他们只是交替使用"完全"和"major"这个词?我尝试查看其他资源,但有些说完全垃圾收集是与major G.C.不同的另一种垃圾收集,而其他资源则根本没有提到它。

我还想知道,如果完全垃圾收集是自己独立的收集器,那么Oracle文档实际上是指完全垃圾收集,还是指major垃圾收集?

谢谢

1个回答

0
主要的垃圾回收(GC)只清理老年代空间,而全面的GC则同时清理年轻代和老年代空间(即整个堆内存)。
我认为this article非常适合解释它们之间的区别。

是的,我在提问之前看过那个页面,对我来说问题在于页面上的作者说“这些术语没有正式的定义。”我理解了作者的解释并理解了区别...但我更感兴趣的是,主要垃圾收集器有一个正式的定义,但我还没有找到完整垃圾收集器的定义,所以完整垃圾收集器只是被主要垃圾收集器所封装的概念,还是它实际上是自己的收集器? - Brixton Weiss
明白了 @BrixtonWeiss。我刚找到这个,但没有官方的说明:每当堆填满时,将触发Full GC。在这种情况下,首先收集年轻代,然后是老年代。如果老年代太满而无法接受年轻代的内容,则省略年轻代GC并使用老年代GC来并行或串行地收集整个堆。无论哪种方式,整个堆都会在停顿事件中被收集。 - Eduardo Meneses

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接