Определите время выполнения сборщика мусора JVM - PullRequest
0 голосов
/ 06 сентября 2018

В моем приложении некоторые части должны быть выполнены за заданное время (обычно в минутах). Поскольку приложение использует много памяти, я обнаружил, что в некоторых случаях данное время может быть сокращено за счет запуска сборщика мусора (иногда на длительное время). Можно ли прочитать где-то время, потраченное сборщиком мусора в данный период, чтобы я мог реагировать на это и дать своему коду больше времени для выполнения?

Я уже пробовал сборщик мусора g1, но заметил несколько сбоев jvm. В моем случае важна пропускная способность, поэтому мне нужно знать, когда вызывается сборщик мусора, что останавливает приложение на некоторое время.

Итак, я хотел бы знать, когда во время выполнения вызывается GC.

1 Ответ

0 голосов
/ 06 сентября 2018
-Xloggc:gc.log
-XX:+PrintGCDetails
-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintGCApplicationConcurrentTime

Добавьте эти флаги JVM в ваше приложение.

PrintGCApplicationStoppedTime показывает, сколько раз приложение было остановлено в безопасной точке. Большую часть времени это вызвано тем, что ГК «остановил мир», хотя есть другие причины .

PrintGCApplicationConcurrentTime - сколько времени приложение работало без остановки

Примечание: Java 6 пока не поддерживает GC1, поэтому у вас нет смысла добавлять его.

...