Почему время остановки потока отличается от времени, когда Java GC - PullRequest
0 голосов
/ 14 мая 2018

при добавлении PrintGCApplicationStoppedTime, чтобы показать время остановки потока, когда GC, мы можем увидеть другое время остановки, например: 2018-05-13T11: 15: 48.562 + 0800: 51.190: Общее время, в течение которого потоки приложения были остановлены: 0,1729628 секунд, Остановка потоков заняла: 0,0000526 секунд 2018-05-13T11: 15: 48.621 + 0800: 51.249: Общее время, в течение которого потоки приложения были остановлены: 0,0005166 секунд, Остановка потоков заняла: 0,0000728 секунд

мы видим, что первый поток остановился на 173 мс, а второй - менее 1 мс. Почему они такие разные? И каково точное значение «времени остановки» (когда начинается отсчет, а когда останавливается).

Если это реальное и точное время, когда поток завис, означает ли это, что один поток был приостановлен на некоторое время, в то время как другой поток все еще работает, когда GC?

1 Ответ

0 голосов
/ 14 мая 2018

Имя опции -XX+PrintGCApplicationStoppedTime вводит в заблуждение.Он сообщает обо всех безопасных точках JVM (или паузах Stop-the-World).Кроме того, собственные учетные записи GC учитывают только время, связанное с GC, в то время как сам процесс безопасной точки может иметь немного больше накладных расходов.

Здесь вы можете найти больше информации о безопасных точках в HotSpot JVM.

...