Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2018, 11:21
Интересующийся
Отправить личное сообщение для staircaseMaker Посмотреть профиль Найти все сообщения от staircaseMaker
 
Регистрация: 25.02.2018
Сообщений: 25

Утечка памяти в приложении javascript
Здравствуйте, коллеги!
Подскажите, пожалуйста, как решить проблему с утечкой памяти. Суть проблемы следующая: есть приложение, написанное на js с использованием библиотеки THREE.js, которое строит 3D модель и выводит ее на страницу. После каждого обновления модели, вкладка браузера требует все больше памяти. После 50-100 обновлений память заканчивается и браузер виснет. Вот скриншот консоли http://joxi.ru/Dr8v4KRI4xLd12 Первый снимок до обновления модели, второй - после. Там появляются какие-то массивы, хотя у меня в коде массивов-то и нет: там все объекты. С DOM работы особо никакой не производится, все глобальные переменные перед обновлением модели затираются.
Подскажите, как найти в коде тот объект, который эти проблемы создает?
Как вообще решаются такие проблемы? Какая нужна дополнительная информация чтобы можно было понять, в чем проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2018, 11:40
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

наиболее частый кейс - в каждой итерации происходит подписка на событие, а отписка потом не делается. В итоге функции-обработчики события остаются в памяти, и держат в замыканиях объекты.
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2018, 11:56
Интересующийся
Отправить личное сообщение для staircaseMaker Посмотреть профиль Найти все сообщения от staircaseMaker
 
Регистрация: 25.02.2018
Сообщений: 25

Сообщение от Alexandroppolus Посмотреть сообщение
наиболее частый кейс - в каждой итерации происходит подписка на событие, а отписка потом не делается. В итоге функции-обработчики события остаются в памяти, и держат в замыканиях объекты.
В явном виде у меня нигде не назначаются обработчики. Можно ли как-то проверить, не происходит ли это каким-то неявным образом?
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2018, 12:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от staircaseMaker
Можно ли как-то проверить, не происходит ли это каким-то неявным образом?
дебажить, пока голова не отвалится.
console.log понавтыкать, брекпоинтов наставить, в общем, увидеть пошагово, что происходит.

иногда помогает способ выявления проблемного кода методом "деления пополам" - просто тупо выкидываешь половину логики, смотришь осталась проблема или нет, и соответственно в какой половине косяк.

Последний раз редактировалось Alexandroppolus, 26.06.2018 в 12:21.
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2018, 10:13
Интересующийся
Отправить личное сообщение для staircaseMaker Посмотреть профиль Найти все сообщения от staircaseMaker
 
Регистрация: 25.02.2018
Сообщений: 25

Коллеги, кто-нибудь может за деньги решить мою проблему?
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2018, 10:16
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

staircaseMaker, создайте тему в разделе форума "работа".
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2018, 10:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от staircaseMaker
Коллеги, кто-нибудь может за деньги решить мою проблему?
ищите форумы по THREE.js
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2018, 19:19
Интересующийся
Отправить личное сообщение для staircaseMaker Посмотреть профиль Найти все сообщения от staircaseMaker
 
Регистрация: 25.02.2018
Сообщений: 25

Коллеги, всем спасибо, проблему решили. Если кому-то будет интересно, то проблема была решена таким образом: после удаления объектов из сцены при обновлении модели дополнительно вызывается метод dispose для геометрии и материала для каждого объекта
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти в плагине для jQuery. TheWanderer jQuery 0 20.11.2013 16:22
Профилирование JavaScript объектов в памяти prike Общие вопросы Javascript 4 05.08.2012 15:09
Сумасшедшая утечка памяти в Opera при использовании javascript в IFRAME Маэстро Opera, Safari и др. 12 18.11.2010 12:29
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34