Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #851 (permalink)  
Старый 27.02.2015, 02:56
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Вопрос про утечку памяти.
Если я удаляю ДОМ элементы, а у него есть дети, при удаление родительского элемента, он уалится только если нету ссылок на него или детей. По идее отдельно детей не нужно удалять.
Но допустим на его дочерний элемент есть ссылка в свойстве то элемент не удалится ?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #852 (permalink)  
Старый 27.02.2015, 08:22
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
Вопрос про утечку памяти.
Если я удаляю ДОМ элементы, а у него есть дети, при удаление родительского элемента, он уалится только если нету ссылок на него или детей. По идее отдельно детей не нужно удалять.
Но допустим на его дочерний элемент есть ссылка в свойстве то элемент не удалится ?
Тут сморя как удаляешь: если через innerHTML, то там в каждом браузере по своему, а если через removeChild, то элемент удаляется из DOM, но если на него есть ссылка, то он и все связанные с ним узлы останутся в памяти, что в общем логично.
__________________
kobezzza
code monkey
Ответить с цитированием
  #853 (permalink)  
Старый 27.02.2015, 10:44
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
но если на него есть ссылка
Если его значение присвоенно какому то свойству то это считается ссылка?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #854 (permalink)  
Старый 27.02.2015, 10:56
Аватар для Zend
Профессор
Отправить личное сообщение для Zend Посмотреть профиль Найти все сообщения от Zend
 
Регистрация: 28.11.2009
Сообщений: 328

Сообщение от cyber
Если его значение присвоенно какому то свойству то это считается ссылка?
Если ты из кода можешь обратиться к этому свойству то считается. При условии что элемент удалён.
Ответить с цитированием
  #855 (permalink)  
Старый 27.02.2015, 10:57
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Zend
Если ты из кода можешь обратиться к этому свойству то считается.
Спасибо, а то в этом у меня давно путаница.
Т.е в общем достаточно удалить родительский элемент и ссылки на его детей?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #856 (permalink)  
Старый 27.02.2015, 10:59
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
Если его значение присвоенно какому то свойству то это считается ссылка?
Если ты имеешь доступ к ней, то конечно, я так понял ты имеешь ввиду что если ссылка установлена другой ноде, которая не была удалена? То да, логично, что раз ты можешь получить доступ к этой ноде (через обращение DOM или переменную / свойство), то у тебя и есть ссылка на ту, убитую ноду и следовательно она будет жива (а вместе с ней и все е] чилды) до тех пор пока жива ссылка.
__________________
kobezzza
code monkey
Ответить с цитированием
  #857 (permalink)  
Старый 27.02.2015, 11:00
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
Если ты имеешь доступ к ней, то конечно, я так понял ты имеешь ввиду что если ссылка установлена другой ноде, которая не была удалена? То да, логично, что раз ты можешь получить доступ к этой ноде (через обращение DOM или переменную / свойство), то у тебя и есть ссылка на ту, убитую ноду и следовательно она будет жива (а вместе с ней и все е] чилды) до тех пор пока жива ссылка.
Спасибо, значить я все правильно понимал)))
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #858 (permalink)  
Старый 27.02.2015, 11:02
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Т.е в общем достаточно удалить родительский элемент и ссылки на его детей?
Да, но в таком случае ссылки лучше хранить в WeakMap, и тогда все будет чистится автоматом.

В этом и крутость WeakMap / WeakSet, что ты можешь добавить туда ссылку на элемент, но если элемент будет удален, то он удалится автоматом.

Например, у тебя на сервере есть объект, соединений пользователей и ты добавляешь его в WeakMap,

var map = new WeakMap();

app.listen(function (req, res) {
    map.add(req, {
       sessionID: '',
       someValue: ''
    })
});


А если соединение порвется, то оно автоматом кильнется из WeakMap (если конечно нет других ссылок).
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 27.02.2015 в 11:05.
Ответить с цитированием
  #859 (permalink)  
Старый 27.02.2015, 11:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
Спасибо, значить я все правильно понимал)))
Только учти, что при удалении через innerHTML все не так
__________________
kobezzza
code monkey
Ответить с цитированием
  #860 (permalink)  
Старый 27.02.2015, 11:07
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
Да, но в таком случае ссылки лучше хранить в WeakMap, и тогда все будет чистится автоматом.

В этом и крутость WeakMap / WeakSet, что ты можешь добавить туда ссылку на элемент, но если элемент будет удален, то он удалится автоматом
Спасибо, понял, учту. В данном случае не выгодно юзать полифил для проекта где полифил весит как сам проект))
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50