2013-03-30 12 views

risposta

17

È possibile calcolare questo fuori profilando l'utilizzo della memoria della vostra applicazione.

Gli oggetti Javascript sono allocati nell'heap, quindi è necessario uno strumento in grado di eseguire il dump dello heap. Dopo aver acquisito un dump dell'heap, puoi ispezionarlo e vedere quante istanze di un dato oggetto (o funzione) esistono.

Ad esempio, per il codice che si conosce si crea un socket ogni volta che un utente si connette. Scaricando l'heap mentre tre utenti sono connessi dovrebbe mostrare ~ 3 socket. Scaricando l'heap dopo che questi utenti si disconnettevano dovrebbero mostrare ~ 0 socket.


È possibile utilizzare l'analizzatore di dump dell'heap di Chrome con i dump dell'archivio Node.js.


Proprio fyi, le funzioni verranno visualizzate nella discarica heap sotto la sezione (closure).

Dovrai assicurarti di assegnare un nome alle funzioni (anche se non hanno bisogno di un nome) in modo che vengano visualizzate come utili nel dump dell'heap.

Per esempio, qualcosa come

function() { }

sarà solo visualizzato come function() nella heap dump. Dove come:

function taggedFunction() { }

verrà mostrata come function taggedFunction() nella heap dump. Se crei 100 taggedFunctions, vedrai taggeFunction nel dump dell'heap 100 volte. Fondamentalmente, nominare le tue funzioni ti consente di capire se continui a creare e a farle fuoriuscire.

+1

+1 per un'ottima risposta con buoni collegamenti e critiche costruttive sul codice OP –

+0

Il setInterval dovrebbe essere comune a tutte le connessioni. È usato per avere lo stesso tempo visualizzato per ciascun utente. Forse c'è un altro modo per farlo? – BenoitD

+0

Daremo un'occhiata al profilo dell'heap. Grazie – BenoitD