Есть ли проблемы с памятью с Ext.js - PullRequest
8 голосов
/ 11 июня 2009

Пользовательский интерфейс приложения, над которым я работаю, был недавно переделан с помощью Ext.js, и я заметил, что использование IE в памяти при просмотре выглядит очень большим. Известны ли проблемы с памятью в Ext.js при использовании IE?

Ответы [ 4 ]

9 голосов
/ 11 июня 2009

Первое, что бросается в глаза в вашем вопросе, это то, что вы видите это в IE. Моя команда недавно прошла через ту же проблему (Extjs на IE). Оказывается, Ext - не виновник, а скорее всего, IE - причина.

Быстрый Google для «утечки памяти при закрытии IE» найдет вам множество объяснений, но суть в следующем:

IE использует два отдельных движка для управления DOM и JavaScript. Когда JavaScript выполняет вызов для создания элемента DOM, механизм Javascript обращается к другому, чтобы создать его. Если вы присоединяете JavaScript к событию в элементе DOM, создается ссылка обратно со стороны DOM на сторону JavaScript.

Проблема заключается в том, что каждый движок имеет свою собственную сборку мусора и не может видеть другой движок. Поэтому круговые ссылки ДЕЙСТВИТЕЛЬНО легко найти, которые могут очень быстро съесть большое количество памяти.

1 голос
/ 11 июня 2009

Я думаю, что довольно просто создавать утечки памяти при программировании на ExtJS для неопытных программистов. Это не проблема ExtJS сама по себе. Это парадигма программирования ExtJS, которая позволяет программистам легко совершать такие ошибки.

Исходя из моего опыта, я создал утечку памяти, когда попытался создать прямой чат AJAX с использованием ExtJS. Когда некоторые объекты постоянно создаются в обратных вызовах AJAX (например, хранилища данных, манипуляции с сеткой), эти объекты не освобождаются и не уничтожаются. Должны быть специальные и очень умные методы, используемые для предотвращения утечек памяти с ExtJS, и это касается не только AJAX или обратных вызовов.

В общем, ExtJS - отличная библиотека, но ее нужно использовать осторожно.

0 голосов
/ 16 июня 2009

Проверьте эту ветку на их форумах , которая охватывает множество утечек в Ext 2.2, вызванных потерянными элементами Похоже, что Ext 2.2.1 исправил большинство из них.

Проблема все еще открыта, кстати. ;)

0 голосов
/ 11 июня 2009

Насколько я понимаю, я не слышал о заметных утечках памяти в ExtJS. Хотя я уверен, что некоторые из них, как правило, исправляются довольно быстро, а сообщество настолько велико, что большинство ошибок известно.

Убедитесь, что ваш дизайн основан на отдельных компонентах, которые вы можете добавлять и удалять, когда они больше не нужны, так как большую часть времени веб-страница ExtJS будет загружаться только один раз, а мем заполняется добавленными вами дополнительными компонентами , Вы можете освободить некоторые mem, используя Ext.destroy (this.el), когда вы закончите использовать компонент.

Также убедитесь, что вы используете Firebug для отслеживания любых компонентов или объектов, которые должны были быть удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...