为什么老年代对象会被Minor GC清理

4

我正在使用Java 11并使用G1GC。我正在处理一个大数据应用程序,但我发现一个奇怪的问题,即在监视应用程序24小时后,没有进行主要GC。但是老年代的大小会周期性地反复下降,并在同一分钟内次要GC花费了很长时间时巧合地发生。
我无法理解为什么次要GC的峰值会清除老年代中的数据。

1个回答

7

G1 GC也有混合垃圾收集(Mixed GC)的概念,这也是G1 GC名称中“Garbage First”的含义。在这种GC中,年轻代和老年代中一些包含最多垃圾的区域会被清理,即优先处理垃圾(Garbage First)。这个机制让G1 GC尽可能地避免Full GC的发生。因为Full GC主要负责与垃圾收集相关的长暂停时间,所以G1 GC能够最小化这些昂贵操作的需求。


1
非常好的答案,正确无误。只需注意有些参数可以指示G1在考虑混合集合时应该考虑多少。 - Eugene

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