2009-06-10 10 views
8

Interfejs użytkownika dla aplikacji, nad którą pracuję, został ostatnio przerobiony przy użyciu narzędzia Ext.js i zauważyłem, że użycie pamięci przez IE wydaje się bardzo duże podczas przeglądania. Czy są znane problemy z pamięcią w Ext.js podczas korzystania z IE?Czy są problemy z pamięcią z oprogramowaniem Ext.js

+0

Dziękuję za wszystkie odpowiedzi. Przekażę je programistom interfejsu użytkownika w moim zespole. –

Odpowiedz

9

Pierwszą rzeczą, która rzuca się na mnie w pytaniu jest to, że widzisz to w IE. Mój zespół ostatnio przeszedł ten sam problem (Extjs w IE). Okazuje się, że Ext nie jest winnym, ale raczej IE jest prawdopodobnie przyczyną.

Szybkie Google dla "przeciek pamięci zamknięcia IE znajdziesz mnóstwo wyjaśnień, ale podstawowy sens jest następujący:

IE wykorzystuje dwa oddzielne silniki zarządzać DOM i JavaScript. Gdy JavaScript wywołuje tworzenie elementu DOM, silnik JavaScript sięga do drugiego, aby go utworzyć. W przypadku dołączenia skryptu JavaScript do zdarzenia w elemencie DOM, odsyłacz jest tworzony od strony DOM do strony JavaScript.

Problem polega na tym, że każdy silnik ma własny system zbierania śmieci i nie może zobaczyć drugiego silnika. Więc okrągłe odniesienia są NAPRAWDĘ łatwe do znalezienia, które mogą bardzo szybko spożywać duże ilości pamięci.

0

O ile mi wiadomo, nie słyszałem o zauważalnych wyciekach pamięci w ExtJS. Chociaż jestem pewna, że ​​były pewne, zazwyczaj są naprawiane dość szybko, a społeczność jest tak duża, że ​​większość błędów jest znana.

Upewnij się, że Twój projekt opiera się na poszczególnych komponentach, które możesz dodać i usunąć, gdy nie są już potrzebne, ponieważ strona internetowa ExtJS jest ładowana tylko jeden raz, a pamięć jest wypełniana dodatkowymi komponentami, które podajesz. to. Możesz zwolnić trochę pamięci za pomocą Ext.destroy (this.el) po zakończeniu używania komponentu.

Upewnij się, że używasz narzędzia Firebug do śledzenia dowolnego komponentu lub obiektu, który powinien zostać usunięty.

1

Uważam, że tworzenie pamięci z ExtJS jest dość łatwe w obsłudze dla niedoświadczonych programistów. To nie jest sam problem z ExtJS. Jest to paradygmat programowania ExtJS, który pozwala programistom łatwo popełniać takie błędy.

Z mojego doświadczenia wynika, że ​​doszło do wycieku pamięci, gdy próbowałem stworzyć prosty czat AJAX za pomocą ExtJS. Gdy niektóre obiekty są ciągle tworzone w ramach wywołań zwrotnych AJAX (takich jak magazyny danych, manipulacje siatką), obiekty te nie są uwalniane i niszczone. Muszą być specjalne i bardzo sprytne techniki używane w celu uniknięcia wycieków pamięci w ExtJS, i to nie tylko związane z AJAX lub callbackami.

Podsumowując, ExtJS jest świetną biblioteką, ale należy z niej korzystać ostrożnie.

+1

Istnieje własność AutoDestroy dla sklepów, które mogą w tym pomóc. – geographika

0

Zapoznaj się z this thread in their forums, która obejmuje wiele wycieków w Ext 2.2 spowodowanych przez osierocone elementy. Wygląda na to, że Ext 2.2.1 naprawił większość z nich.

Kwestia nadal jest otwarta, btw. ;)

Powiązane problemy