Gibt es Speicherprobleme mit Ext.js?

8

Die Benutzeroberfläche für eine Anwendung, an der ich arbeite, wurde kürzlich mit Ext.js überarbeitet und ich habe bemerkt, dass die Speichernutzung von IE beim Betrachten sehr groß erscheint. Gibt es Speicherprobleme mit Ext.js bei der Verwendung von IE?

    
Mr. Will 10.06.2009, 21:22
quelle

4 Antworten

9

Das erste, was mir in Ihrer Frage auffällt, ist, dass Sie dies in IE sehen. Mein Team hat kürzlich das gleiche Problem (Extjs on IE) durchgespielt. Es stellt sich heraus, dass Ext nicht der Täter ist, sondern IE wahrscheinlich die Ursache ist.

Eine schnelle Google für "IE Schließung Speicherleck" finden Sie viele Erklärungen, aber der grundlegende Kern ist wie folgt:

IE verwendet zwei separate Engines, um das DOM und JavaScript zu verwalten. Wenn JavaScript einen Aufruf zum Erstellen eines DOM-Elements aufruft, greift die JavaScript-Engine zur anderen, um sie zu erstellen. Wenn Sie JavaScript an ein Ereignis in einem DOM-Element anhängen, wird ein Link von der DOM-Seite zurück zur JavaScript-Seite erstellt.

Das Problem liegt in der Tatsache, dass jede Engine ihre eigene Speicherbereinigung hat und nicht auf die andere Engine sehen kann. So sind kreisförmige Referenzen wirklich leicht zu finden, die große Mengen an Speicher sehr schnell essen können.

    
Mike Clark 10.06.2009, 23:22
quelle
1

Ich denke, dass es ziemlich einfach ist, Speicherlecks zu erzeugen, wenn mit ExtJS für nicht erfahrene Programmierer programmiert wird. Dies ist kein ExtJS-Problem an sich. Es ist das Programmier-Paradigma ExtJS, das es Programmierern ermöglicht, solche Fehler leicht zu machen.

Aus meiner Erfahrung habe ich ein Speicherleck erstellt, als ich versucht habe, einen direkten AJAX-Chat mit ExtJS zu machen. Wenn einige Objekte ständig in AJAX-Callbacks (z. B. Datenspeicher, Rastermanipulationen) erstellt werden, werden diese Objekte nicht freigegeben und nicht zerstört. Es müssen spezielle und sehr clevere Techniken verwendet werden, um Speicherlecks mit ExtJS zu vermeiden, und dies betrifft nicht nur AJAX oder Callbacks.

Alles in allem ist ExtJS eine großartige Bibliothek, aber es muss sorgfältig verwendet werden.

    
Thevs 11.06.2009 01:59
quelle
0

Soweit ich weiß, habe ich in ExtJS noch nicht von nennenswerten Speicherlecks gehört. Obwohl ich sicher bin, dass es einige gibt, werden sie normalerweise ziemlich schnell behoben und die Community ist so groß, dass die meisten Bugs bekannt sind.

Stellen Sie sicher, dass Ihr Design auf einzelnen Komponenten basiert, die Sie hinzufügen und entfernen können, wenn sie nicht mehr benötigt werden. Eine ExtJS-Webseite wird meistens nur einmal geladen und das Mem wird mit den zusätzlichen Komponenten gefüllt . Sie können einige Mem mit Ext.destroy (this.el) freigeben, sobald Sie eine Komponente nicht mehr benötigen.

Stellen Sie außerdem sicher, dass Sie Firebug verwenden, um alle Komponenten oder Objekte ausfindig zu machen, die entfernt werden sollten.

    
karlipoppins 10.06.2009 21:39
quelle
0

Sieh dir diesen Thread in ihren Foren an , der viele Lecks in Ext 2.2, die von Waisen verursacht wurden, abdeckt Elemente. Es scheint, dass Ext 2.2.1 die meisten von ihnen repariert hat.

Das Problem ist immer noch offen, übrigens. ;)

    
Jabe 16.06.2009 18:29
quelle

Tags und Links