12

Attualmente sto sviluppando un'applicazione utilizzando il framework O3D WebGL di Google e questa è la prima volta che utilizzo JavaScript in modo intensivo. Le funzionalità sono complete solo per circa il 20%, ma già l'applicazione inizia da sola occupando circa 160 meg di memoria, mentre l'applicazione in esecuzione consuma circa 200kb al secondo in Chrome, 2meg in FF; come lo schermo è rinfrescato. Mentre sto scrivendo, ho lasciato Chrome 9 in esecuzione e ha appena raggiunto i 400 meg di utilizzo della memoria. Ora mi sto cacciando soprattutto con l'utilizzo di FF, e sto cercando una buona documentazione sull'ottimizzazione di JavaScript, impedendo perdite di memoria, qualsiasi cosa possa aiutarmi a risolvere questo problema. Gradirei davvero anche qualche link a fantastici strumenti che mi aiuteranno. Grazie in anticipo.Utilizzo della memoria Javascript e debugging in Chrome/Firefox (Minefield)

Modifica: ho trovato Mozilla performance tools ma ho bisogno di qualcosa di semplice da usare, preferibilmente con una GUI, o almeno una guida noob friendly. Anche molti di questi strumenti sono per Linux (sto usando Win7) o richiedono l'acquisto/sono solo a riga di comando. + Mi piacerebbe davvero vedere qualcosa per Chrome :) ma accetterò la risposta che fornisce le informazioni più utili.

Modifica: gli strumenti di sviluppo di Google Chrome segnalano solo 10 meg di utilizzo della memoria, incerti da dove proviene il resto.

+0

Quanta quantità di memoria utilizzata (160 MB) non è rara nelle applicazioni 3D. Pensa a quanta memoria occupano i veri giochi 3D e, soprattutto, la tua app è scritta in JavaScript! Ma il costante aumento della memoria che stai vivendo è probabilmente dovuto a qualche tipo di perdita di memoria, anche se non posso aiutarti più di tanto. –

+1

@musicfreak: molto vero, mi aspetto che occupi un bel po 'di memoria e richiederà agli utenti di avere un PC decente, ma l'aumento nell'uso della memoria di fire fox non richiederà molto tempo per raggiungere il massimo dal sistema degli utenti lascialo aperto, penso che sia il meglio che mi viene ora trattato prima di andare oltre! come voglio essere in grado di affrontare questo genere di cose in futuro :) – Chris

+1

Sì, è vero, e sicuramente penso che sia dovuto a perdite di memoria (sia nell'implementazione WebGL o nella tua applicazione, molto probabilmente quest'ultima) ma io solo volevo dire che l'utilizzo della memoria originale probabilmente non è colpa tua. :) –

risposta

7

Avete ancora la possibilità di dare un'occhiata allo Speed Tracer? Questo dovrebbe darti più di quello che ti serve, penso.

Con l'utilizzo della memoria, probabilmente si desidera eseguire un profilo di heap negli strumenti di sviluppo di Chrome nella scheda "Profili". Puoi confrontare più profili di heap per dare un'occhiata all'utilizzo della memoria.

+0

Grazie ho dato un'occhiata al tracciante della velocità, mostra un timer che esegue regolarmente l'aggiornamento, ma diventa lento solo quando l'utilizzo della memoria aumenta. Sono riuscito a ottenere l'heap della memoria e mostra 10 meg di elementi, ma questo non spiega il resto. Ho la sensazione che il mio codice sia davvero pessimo, non sto usando la funzione di cancellazione che ho letto da qualche parte. Questo è probabilmente ciò di cui ho bisogno di esaminare, C# per esempio nella maggior parte dei casi ti consiglia di utilizzare le classi che ereditano l'interfaccia IDisposable dopo averle completate.Ho una classe di funzione personalizzata per tutti i miei oggetti 3d params – Chris

+0

Dovrebbe esserci uno strumento che va e aggiunge cancelli a tutte le proprietà inutilizzate nel tuo codice - questo è uno strumento per cui pagherei. – Chris

+0

C'è anche la pagina 'about: memory' nelle ultime versioni di Chrome. –