12

Ich entwickle gerade eine Anwendung mit Google O3D WebGL Framework, und das ist das erste Mal, dass ich JavaScript so intensiv benutze. Die Funktionen sind nur zu etwa 20% abgeschlossen, aber bereits die Anwendung beginnt mit etwa 160 Megabyte Arbeitsspeicher, während die Anwendung läuft, verbraucht sie etwa 200kb pro Sekunde in Chrome, 2mg in FF; wie der Bildschirm aktualisiert wird. Während ich das schreibe, habe ich Chrome 9 laufen gelassen und es hat gerade 400 Megabyte Speicherverbrauch erreicht. Ich mache mir jetzt vor allem mit der Verwendung von FF etwas vor und suche nach einer wirklich guten Dokumentation über die Optimierung von JavaScript, die Verhinderung von Speicherlecks, alles, was mir dabei helfen wird, dies grundlegend anzugehen. Ich würde auch alle Links zu großartigen Tools, die mir helfen, sehr schätzen. Danke im Voraus.Javascript Speicherverbrauch und Debugging in Chrome/Firefox (Minefield)

Edit: Ich bin auf Mozilla performance tools gestoßen, aber ich brauche etwas Einfaches zu verwenden, vorzugsweise mit einer GUI oder zumindest einem Noob freundliche Anleitung. Auch viele dieser Tools sind für Linux (ich benutze Win7) oder erfordern Kauf/nur Befehlszeile. + Ich würde wirklich gerne etwas für Chrome sehen :) aber ich werde die Antwort akzeptieren, die die nützlichsten Informationen liefert.

Bearbeiten: Die Google Chrome-Entwicklertools melden nur 10 Megabyte Speicherverbrauch, unsicher, wo der Rest herkommt.

+0

So viel Speicherverbrauch (160 MB) ist in 3D-Anwendungen nicht ungewöhnlich. Denke darüber nach, wie viel Speicher reale 3D-Spiele aufnehmen - und obendrein ist deine App in JavaScript geschrieben! Aber der ständige Speicherzuwachs, den Sie erleben, ist wahrscheinlich auf eine Art Speicherverlust zurückzuführen, obwohl ich Ihnen nicht mehr helfen kann. –

+1

@musicfreak: Sehr wahr, ich erwarte, dass es ziemlich viel Speicher braucht, und erfordert Benutzer einen anständigen Spezifikations-PC zu haben, aber die Erhöhung der Speicherbelegung von fire fox dauert nicht lange, um ein Benutzersystem zu maximieren Lass es offen, ich denke, es ist das Beste, was ich jetzt ausgehandelt habe, bevor ich weitermache! wie ich in der Lage sein, in Zukunft solche Dinge anzugehen :) – Chris

+1

Ja, stimmt, und ich denke definitiv, dass das auf Speicherlecks zurückzuführen ist (entweder in der WebGL-Implementierung oder Ihrer Anwendung, höchstwahrscheinlich letzteres), aber ich gerade Ich wollte erwähnen, dass die ursprüngliche Speichernutzung wahrscheinlich nicht deine Schuld ist. :) –

Antwort

7

Hattest du schon die Chance, Speed Tracer auschecken? Das sollte dir mehr von dem geben, was du brauchst, denke ich.

Mit Speichernutzung möchten Sie wahrscheinlich ein Heap-Profil in den Chrome-Entwicklertools auf der Registerkarte "Profile" erstellen. Sie können mehrere Heap-Profile vergleichen, um einen Blick auf die Speichernutzung zu werfen.

+0

Danke Ich habe mir den Geschwindigkeits-Tracer angeschaut, er zeigt einen Timer, der die Aktualisierung regelmäßig ausführt, aber er wird nur langsam, wenn die Speicherauslastung zunimmt. Ich habe es geschafft, den Speicher-Heap zu bekommen, und es zeigt 10 meg Elemente, aber das erklärt nicht den Rest. Ich habe das Gefühl, dass mein Code wirklich schlecht ist, ich benutze nicht die Löschfunktion, die ich irgendwo gelesen habe. Dies ist wahrscheinlich, was ich untersuchen muss. C# zum Beispiel empfiehlt in den meisten Fällen, dass Sie alle Klassen verwenden, die die IDisposable-Schnittstelle erben, sobald Sie damit fertig sind.Ich habe benutzerdefinierte Funktionsklasse für alle meine 3D-Objekte params – Chris

+0

Es sollte ein Tool, das geht und Hinzufügen löschen alle nicht verwendeten Eigenschaften in Ihrem Code - das ist ein Werkzeug, das ich bezahlen würde. – Chris

+0

In den letzten Versionen von Chrome gibt es auch die Seite "about: memory". –