Проблема с памятью - кэширует ли Webkit стили CSS элементов? - PullRequest
2 голосов
/ 21 сентября 2010

У меня проблема с памятью в браузерах webkit на Windows с моим текущим проектом.Сначала я опишу проект, над которым я работаю, а затем опишу реальную проблему.Пожалуйста, примите мои извинения за длинный текст, я надеюсь, что это не слишком много ..

Я работаю над проектом, который позволяет вам просматривать печатный журнал онлайн.Для поддержки iPad это делается в HTML / CSS / JS (Mootools), а не во Flash.В основном это показывает двойную страницу за раз, загружая новые через JSON.Эта двойная страница - в основном, div, содержащий изображение и, возможно, некоторые дополнительные элементы.Когда двойная страница не видна, ее контейнерный div удаляется из DOM после того, как все изображения «выгружаются», устанавливая для их src значение «1» белый jpg, а также я пытаюсь обнулить и удалить все свойства вdiv перед его удалением из DOM.

Firefox, Opera и IE выполняют выгрузку правильно, и я вижу, что использование ОЗУ остается примерно одинаковым, независимо от того, сколько страниц я просматриваю - новые страницызагружены, старые загружены.Или, по крайней мере, вы видите, что время от времени память освобождается до нормального значения, возможно, с помощью сборки мусора.

Safari и Chrome, с другой стороны, не освобождают память вообще, и использование памяти возрастаетс каждой новой просмотренной страницей.Таким образом, оперативная память заполняется все больше и больше, вероятно, до тех пор, пока ее больше не будет.Когда вы возвращаетесь и просматриваете уже загруженные страницы, использование памяти остается прежним.

Теперь я подумал, что память каким-то образом используется для кэширования загруженных изображений, но я понял, что при отключении стилей изв меню разработчика Safari использование оперативной памяти всегда падает до одного и того же «нормального» значения, независимо от того, каким оно было ранее.Это означает: если вы просматриваете несколько страниц, и Safari заполняет, например, 500 МБ ОЗУ, и вы отключаете стили, использование ОЗУ падает до ~ 120 МБ.Теперь, если вы просматриваете еще больше страниц, и пусть Safari занимает, скажем, более 1 ГБ ОЗУ, и вы отключаете стили, снова использование ОЗУ падает примерно до 120 МБ.

Таким образом, я заключаю, что ОЗУ не используется полностьюпо данным изображения, но по каким-либо данным, связанным со стилем.И для меня это волшебство или vodoo: я действительно не знаю, как подходить к проблеме с этого момента.У меня возникают трудности с исследованием проблемы, и, возможно, я еще даже не идентифицировал ее.

1 Ответ

1 голос
/ 21 сентября 2010

Хм.Я в некотором роде сомневаюсь, что это действительно намеренно сохраненные данные стилей ... Я подозреваю, что это просто кеш памяти WebKit лениво отбрасывает ресурсы, и ему нужно что-то, чтобы запустить его в действие.Переключение таблиц стилей было бы чем-то, что оставило бы кучу фоновых изображений теперь неиспользованными, поэтому я предполагаю, что они используют это как триггер для очистки кэша памяти.Могут быть и другие триггеры.

Я не уверен, что такое эвристика кэша памяти WebKit, но меня не удивит, если такие ресурсы, как изображения, загруженные страницей, будут храниться в кэше памяти неопределенно долго, по крайней мере, так долгокак было достаточно рабочей памяти.

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