Понимание журналов Java GC - PullRequest
       20

Понимание журналов Java GC

3 голосов
/ 02 декабря 2009

Я включил подробные параметры GC на моем JDK, и теперь я вижу такие строки, как

25.598: [CMS-concurrent-sweep-start]
25.622: [CMS-concurrent-sweep: 0.023/0.024 secs] [Times: user=0.02 sys=0.00, real=0.03 secs]
25.623: [CMS-concurrent-reset-start]
25.629: [CMS-concurrent-reset: 0.007/0.007 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

Кто-нибудь хочет сказать мне, что именно означают все параметры?

  1. Какая разница между sys + user и реальным временем?
  2. Что означает «0,023 / 0,024 с»?

Ответы [ 2 ]

4 голосов
/ 02 декабря 2009

Я думаю, что это связано с использованием процессора ..

  1. real - абсолютная разница времени между концом и началом (не исключая переключение контекста)
  2. user - сколько времени затрачивается на выполнение кода в пространстве пользователя
  3. sys - сколько времени затрачивается на обработку системного кода (например, системные вызовы или все остальное, что перемещает управление из кода пользователя в код ядра)

Примечание: в то время как real не представляет эффективное время (из-за включения также времени, в которое GC уходит из CPU, чтобы позволить его чему-то другому) sys + user делает .

EDIT

CMS-concurrent-sweep - это фаза, на которой GC фактически очищает ненужные объекты (это делается после фазы маркировки). В этом случае это происходит одновременно, поскольку GC работает вместе с приложением, не приостанавливая его, и время должно быть использовано время (может быть, time-start / time-end, не уверен насчет этого)

2 голосов
/ 09 декабря 2009

Согласно http://www.sun.com/bigadmin/content/submitted/cms_gc_logs.html, два числа 0.023/0.024 - это время процессора / стены.

...