Я столкнулся с утечкой памяти в приложении Flex. Приложение Flex является частью большого веб-приложения (со всеми видами технологий внутри).Утечка памяти в приложении Flex
Утечка памяти происходит, когда приложение Flex вызывает обновление опроса с сервера каждые 5 секунд.
Факты таковы:
- Я использую AMFChannel, чтобы сделать соединение. Опрос неверен. Каждое обновление создает новый экземпляр AMFChannel.
- Серверная сторона BlazeDS, работающая как сервлет внутри моего веб-приложения.
- Утечка памяти происходит на IE и FireFox. Это не происходит вовсе на Chrome.
- За одну ночь память IE увеличилась на сотни МБ и в итоге рушится.
- В Flex память увеличивается, но намного медленнее. За ночь он увеличится на 30 МБ.
- Используя профилировщик Flex, я увидел, что увеличенная память связана с AMFChannels.
- Я попытался установить AMFChannel requestTimeout to 60 sec. Он ничего не сделал.
- Я попытался установить BlazeDS connect-timeout-seconds to 60 sec. Ничего не изменилось. Но я не уверен, что сделал это правильно.
Мои выводы до сих пор являются:
- AMFChannel на самом деле получает соединения из браузера. В Flex AMFChannel потребляет небольшой кусочек памяти, в то время как в браузере он потребляет гораздо больше. Это объясняет разницу в потребляемой памяти между приложением Flex и IE.
- Как-то AMFChannel не выключается, а не собирается мусор.
Мои запросы:
- ли мои выводы не так ли?
- Как убедиться, что AMFChannel выключен и очищен?
- Является ли экземпляр подключения на клиенте управляемым BlazeDS (на стороне сервера)?
- Любой другой ключ, чтобы помочь мне продолжить расследование этому вопросу
Благодарности
Спасибо, что ответили. Если AMFChannel не является бесплатным в Flex, вызывает ли он объект соединения в IE, чтобы он не работал? –
Я добавил вручную отключить вызов к каждому удаленному объекту, который живет более 1 минуты. Похоже, что память Flex стабильна, но память IE продолжает расти. –