Java Garbage Collection会停止所有Java进程

Gua*_*eed 7 java garbage-collection

我们在一个linux机器上运行多个服务器进程实例.该盒子有8个内核和16GB的RAM.我使用Java 1.6启动-Xincgc选项的每个进程.

我们在整个应用程序中配备了各种计时器,用于跟踪完成各种任务的时间.当垃圾收集发生时,我注意到盒子上的每个java进程都打印出当时正在运行的任何任务都很慢.

它不会拖延很长时间,可能是100-300ms左右,但延迟是一个很大的因素.它也不会经常停滞,只是定期.

当垃圾收集发生时是否会阻止任何java进程随时获取?如果是这样,有什么方法吗?我应该使用不同的GC选项吗?

更新:

为了清楚起见,我并不担心在GC发生时一个进程停止.我可以调整设置或针对该情况进行优化.我只是想知道为什么每次运行Java进程似乎都在我认为它们或多或少独立的同时停滞不前.

cjs*_*hno 0

如果您使用像 JConsole 这样的工具来查看内存活动,您会发现垃圾收集通常是一项重要的活动。您可能需要进行一些分析以查看是否还涉及其他瓶颈。此外,大多数垃圾收集算法都有相当多的可用配置选项。

最后,我记得我们不久前处理过的一个情况使我们发现将最小和最大内存设置更接近是有帮助的(至少在我们的情况下)。它导致更频繁的垃圾收集,但它们并不那么具有侵入性。

希望这可以帮助。