Флаги 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 МС (сообщается во второй строке).

флаги можно использовать отдельно или вместе.