Сборка мусора Java останавливает все процессы Java

Мы запускаем несколько экземпляров серверного процесса на одном Linux-сервере. В коробке 8 ядер и 16 гб оперативной памяти. Я запускаю каждый процесс с параметром -Xincgc, используя Java 1.6.

В приложении есть различные таймеры, которые отслеживают время выполнения различных задач. Когда происходит сборка мусора, я замечаю, что каждый java-процесс в коробке выводит на печать, что любая задача, которую он выполнял в то время, была медленной.

Он не останавливается надолго, может быть, 100–300 мс или около того, но задержка является огромным фактором для этого. Он также не глохнет постоянно, а лишь периодически.

Когда происходит сборка мусора, останавливает ли это любой процесс java в любое время? Если да, то есть ли способ обойти это? Должен ли я использовать разные варианты сборки мусора?

ОБНОВЛЕНИЕ:

Для ясности, меня не беспокоит остановка одного процесса во время сборки мусора. Я могу изменить настройки или оптимизировать для этого случая. Мне просто интересно, почему КАЖДЫЙ запущенный процесс Java, кажется, останавливается в одно и то же время, когда я думал, что они более или менее независимы.

7
задан Guaranteed 24 February 2012 в 01:09
поделиться