Фон. В настоящее время я работаю над сайтом интрасети, использующим библиотеку MochaUI (работая из демонстрации виртуального рабочего стола), Я использую Mootools 1.2.4 и MochaUI 0.9.7. Окна, открытые в моей реализации "виртуального рабочего стола", загружают их содержимое через iframes. Некоторые загруженные страницы довольно сложны с точки зрения css и сценариев, поэтому важно, чтобы объекты Window были надлежащим образом собраны в мусор, когда пользователь закрывает окно. Об этом, по-видимому, заботится библиотека (при использовании Firefox она выполняет справедливую работу).
Обновление Изначально опубликованный вопрос стал слишком длинным после последующих изменений/обновлений. Название больше не было точным, поэтому я тоже изменил это. Также см. Мой ответ ниже для частичного решения.
Вот основные моменты:
-
Chrome goofs выглядит так:
- Chrome не освобождает память, выделенную для объектов окна MochaUI, когда они закрыты. Вместо этого использование памяти Chrome замерзает (буквально) на уровне, достигнутом после того, как окно завершит загрузку содержимого iframe, установив нижнюю границу использования памяти до обновления страницы.
- Память, используемая процессом, продолжает увеличиваться с последующим открытием/закрытием окна. В конце концов, достигается некоторый тип кепки, и использование памяти перестает подниматься, как круто/начинает колебаться, а не резко подниматься.
- Эта проблема наиболее очевидна, когда окна, о которых идет речь, загружают довольно здоровенный (по памяти) iframe-контент. Окно, которое я использую для всех целей тестирования, загружает страницу 580 кб (без кэша) в ее iframe.
-
Как ни странно, ожидаемая сборка мусора имеет место, когда
- браузер сведен к минимуму
- открывается другая вкладка в том же окне браузера
- В инструментах разработчика записывается временная шкала памяти. (вариант комедии)
- Означает ли это поведение любые возможные подходы к решению # 1?