В настоящее время я запускаю приложение, для которого требуется максимальный размер кучи 16 ГБ.Длинные GC-паузы в приложении
В настоящее время я использую следующие флаги для обработки мусора.
-XX\:+UseParNewGC, -XX\:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=50, -XX\:+DisableExplicitGC, -XX\:+PrintGCDateStamps, -XX\:+PrintGCDetails, -Xloggc\:/home/user/logs/gc.log
Однако я заметил, что во время некоторых коллекций мусора, замки приложений на несколько секунд, а затем продолжает - Это совершенно неприемлемо, поскольку это игровой сервер.
Приложение из моих журналов сбора мусора можно найти here.
Любые советы о том, что я должен изменить, чтобы уменьшить эти длительные паузы, будут очень признательны.
Я считаю, что это одна из причин, почему многие люди предпочитают C++ над Java в режиме реального времени игры , Но не принимайте * мое * слово для этого ... – Mysticial
Можете ли вы предоставить некоторые конкретные строки, которые долгое время приостанавливали gc? Вместо того, чтобы ожидать, что читатели будут искать файл журнала для строк – noahlz
, я предпочитаю использовать память кучи для чего-либо более 1 ГБ. Сбой памяти кучи сложнее кодировать, но мало влияет на время паузы GC. –