Обновлено 10/21: Изменено название и вопрос, чтобы получить ответ (кроме "нет" ).
Мы испытываем утечки в Safari (подтвержденные в Windows и Mac, подозреваемые в iOS). Существуют ли расширения Safari, которые позволяют использовать одно использование профиля JavaScript/DOM для обнаружения потенциальных утечек? Еще лучше, есть ли какой-либо инструмент, который можно использовать на iOS или в эмуляторе Apple iOS? Какие существуют методы обнаружения того, что может вызвать утечку памяти в JavaScript/DOM в Safari? И знает ли кто-нибудь о ЛЮБОЕ способе доступа к информации о памяти для iOS?
Фон
Мы разрабатываем веб-приложение iOS Safari, которое использует одностраничную парадигму приложения, загружая 100s полноэкранных изображений. Мы изменили нормальный лимит изображения для iPhone 6,5 МБ iOS, сбросив исходный код для тегов изображений, но теперь мы сталкиваемся с тем, что, по моему мнению, является утечкой памяти в iOS Safari. После загрузки ~ 250-300 изображений iOS Safari просто перестает загружать изображения, из-за чего мы подозреваем утечку памяти. Не удивительно, учитывая, что одна и та же утечка появляется как в Safari для Windows, так и в Safari для Mac - в Windows это особенно плохо; для каждого нового полноэкранного изображения с высоким разрешением потребляется еще 10-15 МБ памяти, если мы переключаемся на более низкие изображения, они по-прежнему накапливают ~ 5 МБ на изображение.
В Windows мы изолировали утечку от простого действия рендеринга изображения в окне просмотра браузера - у нас есть карусель изображений и даже с нулевой манипуляцией DOM, просто переведя (3d) изображение через окно просмотра, память выделяется и никогда не выпускается. В Windows потребление памяти может быстро перерасти до 1,5 ГБ, после чего Safari просто сработает. На Mac это не так плохо, но память легко перескакивает от 100 МБ в начале до 500 МБ и далее. Для сравнения, вкладка Chrome/процесс, на котором размещается одна и та же страница, растет от примерно 33 МБ до ~ 120 МБ, а затем стабилизируется.
Попытка обходных решений
Мы попытались удалить отдельные теги изображений и заменить их образ-заполнителем вместо их сброса, но это, похоже, не облегчает проблему, а также вызывает проблемы с производительностью, предположительно из-за сбоя DOM. Интересно, что удаление/отключение ВСЕХ изображений работает - как только выполняется команда, память освобождается. Однако это вызывает проблемы, управляет состоянием пользовательского интерфейса и создает резервную копию карусели также занимает значительное время. Обновление страницы - это еще один способ обхода, но это приводит к еще большему сбою UX.
Обновление 04/10: Просто обновление о том, что мы закончили: iOS 4.2 представила ограничение, которое отсекает 3D-преобразованное Div на 122,900 пикселей. Не знаю, почему, но это заставило нас перепроектировать и перейти с динамической карусели вместо нашей предыдущей статической диафильмы.
Во-вторых, мы обнаружили, что использование div с фоновыми изображениями работает лучше самих изображений. Это похоже на еще одну ошибку в Safari или, в лучшем случае, на противоречивую реализацию ограничений.
окончательное обновление
Мысли? Если вы столкнулись с подозрениями в утечке в Safari, каков был ваш подход к их работе?