2016-07-07 36 views
12

Sto scrivendo un'applicazione server Web utilizzando NodeJS 6.3.0. l'applicazione viene eseguita con il parametro --expose-gc, quindi è disponibile la funzione global.gc(). la domanda è: come posso sapere quando l'esecuzione manuale del garbage collector è stata completata.quando eseguo manualmente il garbage collector, come posso sapere quando è completato?

è global.gc() una funzione sincrona e significa che la riga successiva di codice verrà eseguita quando la funzione ha completato l'attività?

posso in qualche modo monitorare quando la mia esecuzione specifica del garbage collector è stata completata?

grazie!

risposta

8

Quindi ho trovato la risposta this.

Se si avvia il processo del nodo con il flag --expose-gc, è possibile chiamare global.gc() per forzare il nodo a eseguire la garbage collection. Tieni presente che tutte le altre esecuzioni all'interno dell'app del tuo nodo sono in pausa fino al completamento del GC, quindi non utilizzarlo troppo spesso o influirà sulle prestazioni.

This un commento anche su questo.

Eseguire global.gc() manualmente (abilitato con nodo --expose_gc) ridurrebbe l'utilizzo della memoria di 50 MB ogni volta e metterebbe in pausa l'app per circa 400ms.

Quindi sembra che sia sincrono e blocchi finché non è finito.