Подтвердить что ты не робот

Сбор сборных мусора nodejs

Кто-нибудь знает, где я могу прочитать о выходе параметра -trace-gc в nodejs?

Я не прошу дать объяснение о том, как работает gc, так как есть много информации об этом, просто для вывода файла -trace-gc.

Я могу догадаться, в чем смысл некоторых полей, но я понятия не имею о некоторых других.

Например:

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

Пример:

[12994]    77042 ms: Scavenge 260.7 (298.1) -> 247.7 (298.1) MB, 9.4 ms [allocation failure].
[12994]    77188 ms: Scavenge 261.7 (298.1) -> 249.0 (300.1) MB, 7.4 ms [allocation failure].
[12994]    77391 ms: Scavenge 263.8 (301.1) -> 250.6 (302.1) MB, 8.1 ms [allocation failure].
[12994]    77511 ms: Scavenge 264.8 (302.1) -> 251.8 (304.1) MB, 7.4 ms [allocation failure].
[12994]    77839 ms: Scavenge 273.4 (304.1) -> 260.7 (305.1) MB, 8.3 ms (+ 55.7 ms in 201 steps since last GC) [allocation failure].
[12994]    78052 ms: Scavenge 274.3 (305.1) -> 261.9 (307.1) MB, 8.2 ms (+ 54.4 ms in 192 steps since last GC) [allocation failure].
[12994]    78907 ms: Scavenge 277.3 (308.1) -> 264.2 (309.1) MB, 10.1 ms (+ 51.5 ms in 196 steps since last GC) [allocation failure].
[12994]    80246 ms: Mark-sweep 272.2 (310.1) -> 82.9 (310.1) MB, 45.2 ms (+ 195.4 ms in 690 steps since start of marking, biggest step 1.2 ms) [GC interrupt] [GC in old space requested].
[12994]    80868 ms: Scavenge 99.3 (310.1) -> 85.5 (310.1) MB, 6.5 ms [allocation failure].
[12994]    81039 ms: Scavenge 100.2 (310.1) -> 86.8 (310.1) MB, 6.9 ms [allocation failure].
[12994]    81455 ms: Scavenge 102.2 (310.1) -> 88.8 (310.1) MB, 5.5 ms [allocation failure].

UPDATE

Глядя на файл, который создает вывод (как указано в mtth), я добавляю объяснение всех полей в случае, если кому-то интересно:

[12994]    77042 ms: Scavenge 260.7 (298.1) -> 247.7 (298.1) MB, 9.4 ms [allocation failure].
[pid] <time_since_start> : 
      <Phase> <heap_used_before (old+young)> (<allocated_heap_before>) ->
              <heap_used_after (old+young)> (<allocated_heap_after>) MB, 
              <time_spent_gc> [<reason_of_gc>]

Кроме того, когда была добавлена ​​инкрементальная маркировка между старым пространством gcs (full), она появляется в трассировке очистки, например:

(+ <incremental_time_duration> ms in <incremental_marking_steps> steps since last GC)

Когда трассировка соответствует старому пространству gcs (full), она также показывает наибольшую длительность шага.

Эти следы соответствуют nodejs 0.12.9, и они выглядят одинаково, по крайней мере, в узлах 4.2.2

4b9b3361

Ответ 1

Ближе всего к документации, которую я смог найти, источник функции, которая генерирует результат. Используя комментарии в gc-tracer.h, мы можем понять, что означает каждая запись. Например:

  • каково значение числа в скобках

Число внутри парендов представляет собой общую память, выделенную из ОС (и одна из них - это общая память, используемая для объектов в куче).