В одном из моих производственных приложений мы используем Oracle JRockit как JVM. Незначительная частота GC очень высокая (примерно каждые 40 секунд). Но какое-то время мы видим частый полный сбор мусора, и в течение этого времени второстепенный сборщик мусора также восстанавливает незначительные байты. что приводит к сбою приложения, так как наше приложение должно отвечать в течение 1 секунды, а полные паузы GC занимают более 1 секунды.
У меня есть некоторые наблюдения из журналов GC. 1 - Minor GC не может вернуть какие-либо байты в течение этого периода, кроме определенного периода. Minor GC восстанавливает почти 95-99 процентов питомников (кроме зоны хранения). 2- Я наблюдаю Запрошено аварийное параллельное сканирование во время фазы уплотнения.
Моя конфигурация кучи
Heap : 10 GB
Nursery : 1GB
GC : gencon
Keeparea : 50%
CompactionRatio : 10%
gcTrigger : 40%
Мы попытались изменить размер детской на 2 ГБ и 3 ГБ, где частота проблем уменьшилась на 2 ГБ и увеличилась на 3 ГБ.
Любая помощь, почему эта проблема вызвана или как исследовать это дальше
Обновление 1:
Я включил модуль memdbg для сборщика мусора и обнаружил, что запускается полный сборщик мусора, потому что количество деталей для детской комнаты превышает установленный по умолчанию предел 10000, но я вижу, что OC также оставляет большое количество деталей в детской. Любые указания в этом вопросе