(здесь разработчик V8.) Да, «IncrementalMarking» и «ProcessWeakCallbacks» - это не типы G C, а фазы основных циклов G C. (Я не знаю, почему это перечисление называется GCType
, вероятно, по историческим причинам.)
Я записываю время, затрачиваемое на сборку мусора, а также подсчет каждого типа
Обратите внимание, что обратные вызовы G C не предназначены и не подходят для измерения времени. В частности, добавочная маркировка (как следует из названия) происходит во многих крошечных пошаговых шагах, но вы получите только один вызов обратного вызова, прежде чем произойдет первый из этих шагов; после этого шаги пошаговой маркировки и выполнения программы будут чередоваться до тех пор, пока маркировка не будет завершена.
Кроме того, обратите внимание, что команда работает над перемещением как можно большей части работы G C в фоновые потоки, что делает Весь вопрос "сколько времени это заняло?" несколько нечетко определено.
В целях расследования в автономном режиме лучше всего ставить флаг --trace-gc
, который должен предоставлять точную и полную информацию о сроках.
Для онлайн-бухгалтерии (по состоянию на ). Обратные вызовы сборщика мусора V8 для измерения активности G C , см. Также мой подробный ответ там), боюсь, нет хорошего решения.