Node v8 Garbage Collector :: ¿cómo depurar largos tiempos de barrido de marca?

Ejecuté mi aplicación con el indicador --trace_gc para intentar encontrar algunos problemas de rendimiento. Bueno, parece que podría haberlo encontrado ...

 1288678 ms: Mark-sweep 498.8 (549.0) -> 488.8 (548.0) MB, 4085 ms [idle notification: finalize idle round] [GC in old space requested].

Gadzooks! Más de 4 segundos para hacer GC. No es de extrañar que esté teniendo problemas.

Ahora, la pregunta real: ¿cómo puedo encontrar qué objetos están siendo GC'd, y más importante, dónde fueron asignados? Ya he usado las instantáneas del montón en nodetime, pero no veo suficiente información para ayudarme a descubrir de dónde provienen estos objetos. Veo algunos consejos que me llevan a creer, tal vez, que tengo una referencia cíclica en algún lugar (por ejemplo, veo cientos de propiedades de "usuario" en la instantánea del montón después de solo un par de llamadas API por un solo usuario).

¿Hay buenos tutoriales por ahí u otra buena información sobre cómo rastrear la causa de estos grandes tiempos de recolección de basura? ¿O tal vez podría imprimir los objetos asignados de alguna manera, para tratar de encontrar una referencia cíclica ...?

Respuestas a la pregunta(1)

Su respuesta a la pregunta