Учтека памяти из-за gif-ки

104
08 июня 2019, 03:30

Это второй мой вопрос за сегодня. Оказалось (экспериментально подтвердилось), что утечка произодит из-за анимации. Это простенький js, html и css:

<img id='myId' src='images/myImg.gif'>

Так вот, в первом варианте, я обнаружил js-скрипт, который на лету меняет гифку. Я посчитал, что каждый раз совать src это не эффективно, и проблема в этом. Тогда создал 3 картинки и стал скрывать ненужные с помощью того скрипта. К моему удивлению есть меньше памяти это не стало! Гифок три, по 300Кб, 300Кб и 700Кб. За минуту работы эта функци выедает 100 Мб у приложения. Все это работает в WebView (ибо Cardova).

Как по вашему, почему это проиходит? И как это рациональнее исправить?

Дополнение: Эффект никуда не пропадает. Достаточно добавить 1 строку с gif, как начинается утечка. Цикл я разумеется комментирую во время эксперимента.

Answer 1

Пришлось заменить анимацию на собственный код js. Это оказалось куда более эффективно, чем подкапотная реализация воспроизведения анимации WebView. Я бы отказался от него, но приложение целиком есть оно. Что сказать, Cardova 2.9... Для себя я объяснил проблему тем, что анимация разбирается на картинки, которые по очереди показываются. Все кадры держаться в памяти. Если их слишком много, то анимация выжирает вашу память. Так например, после того, как я заменил анимацию на скрипт, вместо 420 Мб памяти, получилось всего 190 Мб.

READ ALSO
Баг с прокруткой

Баг с прокруткой

Суть проблемы в том что если перейти на любую другую вкладку в браузере а вкладку со скриптом не закрывать то когда возвращаешься на вкладку...

122
Изображение на всю высоту в правом блоке

Изображение на всю высоту в правом блоке

Помогите пожалуйста приклеить изображение в правый блок на всю высоту экрана, с нулевыми отступами, как на изображенииВозможно без использование...

155
Atom автокомплит JavaScript в HTML файлах

Atom автокомплит JavaScript в HTML файлах

Подскажите, можно ли как-то настроить автокомплит js в файлах HTML? Я уже всякое перепробовал и ничего не получаетсяКогда создаю файл

141