Я использую SVG-Edit для создания довольно большого SVG-файла изображения. Проблема в том, что использование памяти кажется безумным, и мне интересно, нормально ли это или есть вещи, которые мне не хватает в отделе оптимизации.
Вот таблица, показывающая дельту памяти на каждом этапе с использованием Firefox 10 about: memory page:
Этапы:
- До: до загрузки SVG-Edit
- Готов: SVG-Edit загружен
- Загрузка 35 изображений общим размером 16,6 МБ *
- Предварительный просмотр сгенерированного файла *
- Закрытый просмотр *
- Закрытая вкладка, запуск очистки памяти FF с помощью about: page memory
* Моя пользовательская функция, а не SVG-Edit
Как вы можете видеть в дельте Ready <-> Load Images, использование памяти значительно увеличилось на 300 МБ! Чтобы загрузить 16 МБ изображений! Я загружаю изображения, создавая ObjectURL , поэтому это не может быть причиной. Во время предварительного просмотра я преобразую массив ObjectURL в data: uri, так что я понимаю, насколько сильно он увеличился (все же, я думаю, это слишком много). Требуется иметь один SVG-файл со всеми встроенными изображениями, поэтому размер каждого SVG-файла составляет 50 МБ или более.
Стоит отметить, что SVG-Edit не использует Canvas. Это DOM-редактор.
Буду признателен за любую помощь, особенно за то, как я могу точно определить, что именно занимает память.
Вот упрощенный процесс загрузки изображений (событие input change ()):
- установить Image.src для objectURL
- установить событие Image.onload для создания элемента SVGImage с src, width, height, скопированным из Image. revokeObjectURL () также выполняется
- сохранить SVGImage в глобальном массиве объекта {imageID, элемент, дескриптор файла}
- добавить SVGImages к SVG