在使用 VisualVM 监视 java 程序时,我注意到垃圾收集器的行为中有一个有趣的模式。似乎很多时候,在执行“正常”垃圾收集运行之后,GC 会执行第二次、更密集的 CPU 运行,这似乎没有额外的影响(在更激进的运行之后使用的堆与这是在较轻的运行之后)。
我已经在 VisualVM 的输出中指出你可以看到垃圾收集器运行和相应的堆使用变化。
我的问题基本上是垃圾收集器在这里做什么,为什么?当有大量可用内存时,是什么导致它尝试这些真正的 CPU 密集型运行,并且与较轻的运行相比没有明显的好处?还是我误解了图表?
程序的性能并没有真正受到影响,我只是好奇。