27.02.2015, 02:56
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Вопрос про утечку памяти.
Если я удаляю ДОМ элементы, а у него есть дети, при удаление родительского элемента, он уалится только если нету ссылок на него или детей. По идее отдельно детей не нужно удалять.
Но допустим на его дочерний элемент есть ссылка в свойстве то элемент не удалится ?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.02.2015, 08:22
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от cyber
|
Вопрос про утечку памяти.
Если я удаляю ДОМ элементы, а у него есть дети, при удаление родительского элемента, он уалится только если нету ссылок на него или детей. По идее отдельно детей не нужно удалять.
Но допустим на его дочерний элемент есть ссылка в свойстве то элемент не удалится ?
|
Тут сморя как удаляешь: если через innerHTML, то там в каждом браузере по своему, а если через removeChild, то элемент удаляется из DOM, но если на него есть ссылка, то он и все связанные с ним узлы останутся в памяти, что в общем логично.
|
|
27.02.2015, 10:44
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от kobezzza
|
но если на него есть ссылка
|
Если его значение присвоенно какому то свойству то это считается ссылка?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.02.2015, 10:56
|
|
Профессор
|
|
Регистрация: 28.11.2009
Сообщений: 328
|
|
Сообщение от cyber
|
Если его значение присвоенно какому то свойству то это считается ссылка?
|
Если ты из кода можешь обратиться к этому свойству то считается. При условии что элемент удалён.
|
|
27.02.2015, 10:57
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Zend
|
Если ты из кода можешь обратиться к этому свойству то считается.
|
Спасибо, а то в этом у меня давно путаница.
Т.е в общем достаточно удалить родительский элемент и ссылки на его детей?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.02.2015, 10:59
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от cyber
|
Если его значение присвоенно какому то свойству то это считается ссылка?
|
Если ты имеешь доступ к ней, то конечно, я так понял ты имеешь ввиду что если ссылка установлена другой ноде, которая не была удалена? То да, логично, что раз ты можешь получить доступ к этой ноде (через обращение DOM или переменную / свойство), то у тебя и есть ссылка на ту, убитую ноду и следовательно она будет жива (а вместе с ней и все е] чилды) до тех пор пока жива ссылка.
|
|
27.02.2015, 11:00
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от kobezzza
|
Если ты имеешь доступ к ней, то конечно, я так понял ты имеешь ввиду что если ссылка установлена другой ноде, которая не была удалена? То да, логично, что раз ты можешь получить доступ к этой ноде (через обращение DOM или переменную / свойство), то у тебя и есть ссылка на ту, убитую ноду и следовательно она будет жива (а вместе с ней и все е] чилды) до тех пор пока жива ссылка.
|
Спасибо, значить я все правильно понимал)))
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.02.2015, 11:02
|
|
Быдлокодер;)
|
|
Регистрация: 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, 27.02.2015 в 11:05.
|
|
27.02.2015, 11:06
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от cyber
|
Спасибо, значить я все правильно понимал)))
|
Только учти, что при удалении через innerHTML все не так
|
|
27.02.2015, 11:07
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от kobezzza
|
Да, но в таком случае ссылки лучше хранить в WeakMap, и тогда все будет чистится автоматом.
В этом и крутость WeakMap / WeakSet, что ты можешь добавить туда ссылку на элемент, но если элемент будет удален, то он удалится автоматом
|
Спасибо, понял, учту. В данном случае не выгодно юзать полифил для проекта где полифил весит как сам проект))
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
|
|