Node v8 Garbage Collector :: como depurar tempos longos de marcação?

Eu executei meu aplicativo com o sinalizador --trace_gc para tentar encontrar alguns problemas de desempenho. Bem, parece que eu encontrei ...

 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! Mais de 4 segundos para fazer o GC. Não é de admirar que eu esteja tendo problemas.

Agora, a verdadeira questão: como posso encontrar quais objetos estão sendo roteados e, mais importante, onde eles foram alocados? Já usei instantâneos de heap no nodetime, mas não estou vendo informações suficientes para me ajudar a descobrir de onde esses objetos estão vindo. Eu vejo algumas dicas que me levam a acreditar, talvez, que eu tenho uma referência cíclica em algum lugar (por exemplo, vejo centenas de propriedades de "usuário" no instantâneo de heap depois de apenas algumas chamadas de API por um único usuário).

Existem bons tutoriais ou outras boas informações sobre como rastrear a causa desses grandes tempos de coleta de lixo? Ou talvez eu pudesse imprimir os objetos alocados de alguma forma, para tentar encontrar uma referência cíclica ...?

questionAnswers(1)

yourAnswerToTheQuestion