Hintergrund: Ich bin zur Zeit auf einer Intranet-Site arbeiten, die Nutzung der MochaUI Bibliothek (Arbeits vom virtual desktop demo) macht. Ich benutze Mootools 1.2.4 und MochaUI 0.9.7. Die Fenster, die in meiner "virtual desktop" -Implementierung geöffnet sind, laden ihren Inhalt über iFrames. Einige der geladenen Seiten sind ziemlich umfangreich in Bezug auf CSS und Scripting. Daher ist es wichtig, dass Window-Objekte beim Öffnen eines Fensters mit einem Garbage Collection-Filter versehen werden. Dies wird angeblich von der Bibliothek erledigt (es macht einen guten Job, wenn man Firefox benutzt).Chrome versagen Speicher frei, Müllabfuhr tritt nicht wie erwartet (Mootools/MochaUI Bibliothek)
Aktualisierung Die ursprünglich gepostete Frage war von nachfolgenden Bearbeitungen/Aktualisierungen übermäßig lang geworden. Der Titel war nicht mehr korrekt, also habe ich das auch geändert. Siehe auch meine Antwort unten für eine Teillösung.
Hier sind die wesentlichen Punkte:
Chrome goofs wie so hoch:
- Chrome versagt Speicher für Fensterobjekte MochaUI zugewiesen oben freizugeben, wenn sie geschlossen sind. Stattdessen wird die Speicherauslastung von Chrome auf der Ebene eingefroren, die erreicht wird, nachdem das Fenster den Iframe-Inhalt geladen hat. Dabei wird eine Untergrenze für die Speichernutzung festgelegt, bis die Seite aktualisiert wird.
- Der vom Prozess verwendete Speicher wird mit nachfolgenden Fensteröffnungen weiter vergrößert. Irgendwann wird irgendeine Art von Cap erreicht, und die Speicherbelegung hört auf zu steigen, wenn sie steil anschwingt oder zu oszillieren beginnt, anstatt dramatisch aufzuspringen.
- Dieses Problem tritt am deutlichsten auf, wenn die fraglichen Fenster ziemlich heftigen (Speicher-Iframe) Inhalt laden. Das Fenster, das ich für alle Testzwecke verwende, lädt eine 580-kb-Seite (nicht zwischengespeichert) in seinem iframe.
Merkwürdigerweise die erwartete Garbage Collection tut stattfinden, wenn
- der Browser anschließend
- weitere Registerkarte im selben Browserfenster geöffnet wird minimiert wird
- ein Die Speicherzeitachse wird in den Entwicklertools aufgezeichnet. (Komödie Option)
- Gibt dieses Verhalten mögliche Ansätze zur Lösung von # 1?
Sehr interessante Frage und gute Erklärung. Ich bin mir nicht ganz sicher, was der Schuldige ist, obwohl ich euch warnen werde, dass es eine Chance gibt, dass es keine Lösung geben wird. Oder wenn es einen gibt, keinen leichten. Google geht beim Programmieren sehr faul vor. Obwohl Chrome am schnellsten zu laden scheint und den geringsten Speicher jedes großen Browsers verwendet, ist es voller Bugs, von denen ich in Firefox oder Opera nicht träumen würde. Gleiches gilt für Android und iOS. – stevendesu
Ich habe eine sehr ausführliche/langweilige Version dieser Frage im Google Chrome Webmaster-Hilfeforum gepostet und keine Antwort erhalten. Deshalb habe ich mich diesmal dafür entschieden, es auf den Punkt zu bringen! Ich stimme zu, dass dies wie ein Fehler aussieht (oder eine Eigenart davon, wie Chrome bestimmt, welche Objekte als Müll erfasst werden). Es ist, als gäbe es eine größere Menge an Garbage Collection, die auftritt, wenn Chrome minimiert wird, und meine Fensterobjekte sind vielleicht nicht völlig unbrauchbar nach den Standards von Chrome. Danke für den Kommentar! – freenatec
@steven_desu: Nicht nur, dass Google einen faulen Programmieransatz wählt, es scheint auch ziemlich apathisch zu sein für jegliche Art von Beschwerden oder Problemen, die seine Benutzer auftauchen. –