Флаги JVM PrintGCApplicationConcurrentTime и PrintGCApplicationStoppedTime
я запускаю программу Java, и мне нужно получить, сколько времени каждый из них потратил на сбор мусора.
Я нашел эти флаги 2 JVM:
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
но я не могу найти информацию об этом.
Полагаю, что PrintGCApplicationStoppedTime
печатает, как долго время приложения было в STW, однако я не уверен в -XX:+PrintGCApplicationConcurrentTime
. Печатает ли он, как долго приложение выполнялось одновременно с потоками коллекции?
спасибо заранее.
2 ответов
названия этих флагов не очень точны.
PrintGCApplicationStoppedTime
показывает, сколько времени приложение было остановлено на safepoint. Чаще всего точки сохранения вызваны отключающие фазы сбора мусора, однако, существует много других причин.
PrintGCApplicationConcurrentTime
сколько времени приложение работало без остановки, т. е. время между двумя последовательными точки сохранения.
вы используете эти флаги, чтобы знать как долго ваше приложение работает между сборками мусора.
В конце концов, это можно вычислить из
Журналы GC, но удобный способ увидеть, что информация с
флаги командной строки -XX:+PrintGCApplicationStoppedTime
и
-XX:+PrintGCApplicationConcurrentTime
.
добавление их в командную строку приводит к следующим выводам:
Application time: 0.2863875 seconds
Total time for which application threads were stopped: 0.0225087 seconds
Application time: 0.1476791 seconds
Total time for which application threads were stopped: 0.0255697 seconds
приложение выполнялось (сообщалось в первой строке) около 287 миллисекунд, а затем было остановлено для около 22 МС (сообщается во второй строке).
флаги можно использовать отдельно или вместе.