Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2014, 16:36
_0_ _0_ вне форума
Аспирант
Отправить личное сообщение для _0_ Посмотреть профиль Найти все сообщения от _0_
 
Регистрация: 10.05.2013
Сообщений: 56

Утечки памяти при addEventListener
Вопрос к мастерам javascript:

Есть ли необходимость удалять обработчики, навешанные методом addEventListener перед удалением элемента, в ситуации если добавляемая функция не имеет в своем замыкании ссылку на элемент?

Просьба аргументировать ссылкой.
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2014, 17:13
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ссылка на элемент не при чем. Можете не удалять если удаляется немного.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2014, 17:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дык какая разница че там имеет функция. Важно чтобы на функцию не было ссылок. С удалением элемента удалится и ссылка на приаттаченный обработчик. Так ведь?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2014, 17:25
_0_ _0_ вне форума
Аспирант
Отправить личное сообщение для _0_ Посмотреть профиль Найти все сообщения от _0_
 
Регистрация: 10.05.2013
Сообщений: 56

да наверное, на всякий случай спросил, хотел пообщаться
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2014, 17:51
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

http://stackoverflow.com/questions/1...vent-listeners
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2014, 11:13
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от _0_
в ситуации если добавляемая функция не имеет в своем замыкании ссылку на элемент?
А это имеет значение? В современных движках, вроде, нет проблемы циклических ссылок. GC идет от рута, вроде, всегда.

Последний раз редактировалось krutoy, 04.12.2014 в 11:20.
Ответить с цитированием
  #7 (permalink)  
Старый 04.12.2014, 11:48
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от _0_
перед удалением элемента
и тут еще важно, что вы подразумеваете под удалением
<html>
<head>
</head>

<body>
<script>

el=document.createElement("div")
el.innerHTML="div"
document.body.appendChild(el)
el.addEventListener("click", function(){alert(1)})

document.body.removeChild(el) // элемент никуда не делся, обработчик тоже

document.body.appendChild(el)

</script>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2014, 22:26
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от krutoy
В современных движках, вроде, нет проблемы циклических ссылок. GC идет от рута, вроде, всегда.
Не все так просто
GC от рута это последний эшелон, если не удалось подчистить память сразу.
И да, он более медленный чем удаление объектов без циклических ссылок(которые могут быть удалены просто по обнулению количества ссылок на себя)

Но эти проблемы могут вас начать волновать на больших объемах вычислений
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2014, 22:45
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от Gvozd
если не удалось подчистить память сразу.
ни "если", а он по любому проходит, поскольку удаление всех обнуленных объектов не гарантирует отсутствия циклических ссылок, иначе смысла swap&sweep не было бы. GC не может волшебным образом узнать, очищена ли память, не пройдя все от рута, он не экстрасенс.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение прозрачности при клике AJIUK jQuery 8 09.03.2014 16:00
SCRIPT7: Недостаточно памяти Ordjo Internet Explorer 2 28.02.2014 17:05
при нажатии на раздел меню поворачивается маркер Сергей545 Элементы интерфейса 5 08.12.2013 22:15
При клике на ссылку ничего не происходит gurg0n Элементы интерфейса 2 24.06.2013 11:11
Кратное увеличение при клике на кнопку vabus Элементы интерфейса 2 15.04.2013 20:42