为什么在Java中使用多个垃圾回收器?
2022-09-01 11:51:36
默认情况下,我在机器上启动的每个Java进程似乎都有两个垃圾回收器。我正在通过JConsole检查这一点。
示例 - 对于我当前运行的 Eclipse。
PS MarkSweep
Collection Count - 221
Collection Time - 102118
Memory Pool Names - java.lang.String[4]
PS 拾荒
Collection Count - 241
Collection Time - 2428
Memory Pool Names - java.lang.String[2]
我假设他们有重叠的池。当使用相同的池(伊甸园,幸存者,老一代)时,两个垃圾回收器如何协同工作?在池之间移动对象时,是否没有重叠(例如,当调用第二个算法时,从一个幸存者移动到另一个幸存者)?即使不是,为什么每个池需要多个收集器?
我已经阅读了有关GC的这篇文章。它们指的是对不同的主要和次要 GC 使用不同的收集器,但似乎没有参考在同一池上使用多个收集器。