2015-10-14 13 views
8

Esiste un modo per sapere quale tipo di oggetti vengono maggiormente raccolti in una applicazione Javascript?JS: Profilo Cosa sono i Garbage Collected Collection degli oggetti

So che è possibile ottenere l'istantanea dell'heap ma che indica solo quali oggetti sono i più comuni, non i più raccolti.

E le allocazioni heap non forniscono informazioni dettagliate sulla classe dell'oggetto.

+0

che dipende in gran parte dall'ambiente in cui il tuo JS è in esecuzione. Per esempio. se stai eseguendo su Nashorn puoi semplicemente usare un profiler JVM. – the8472

+0

Hai trovato una soluzione a questo? – Jodes

+1

@Jodes Vedi http://stackoverflow.com/questions/39429647/how-to-detect-the-memory-allocations-that-are-triggering-garbage-collection-in-j/ – guest271314

risposta

1

Utilizzando quale motore di runtime JavaScript? Ogni motore avrà il proprio GC e il proprio modo di monitorare gli eventi GC. Il motore Chrome V8 sarebbe un buon punto di partenza se stai cercando di saperne di più su un'implementazione GC: https://developers.google.com/v8/ Se inserisci la sorgente da github https://chromium.googlesource.com/v8/v8.git troverai i file src/heap/gc-tracer. [H | cc] fornire un sacco di capacità, e si potrebbe aggiungere di più per le proprie esigenze di profilazione.

+0

Daniel, questo non risponde alla domanda. L'implementazione del motore GC non è la domanda. Quello che serve è un modo per scoprire quali oggetti javascript il GC sta raccogliendo. – Jodes

+0

Guarda il codice sorgente. Se usa Chrome V8, può ottenere quelle informazioni. –

+0

Scusa, non seguo. Come si potrebbe utilizzare il codice V8 per accelerare javascript? Modificandolo e costruendo un interprete javascript C++ personalizzato per ottenere informazioni di debug? – Jodes

1

Immagino che sia possibile eseguire questa operazione acquisendo più istantanee di heap e quindi confrontando le istantanee per identificare quali oggetti vengono raccolti graficamente. È possibile fare riferimento alla risposta this. Spero che aiuti :)