|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.10.2010, 00:14 | #1 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
утечки памяти в javascript
Здравствуйте,
вот, озадачился написанием элемента управления на javascript по рабочей нужде и заинтересовался таким вопросом: какие конструкции в js будут приводить к утечкам памяти? Погуглив, узнал, что такое бывает, хотя не пойму: есть сборщик мусора, неиспользуемые объекты должны удаляться, с чего должна течь память? Просветите, пожалуйста |
15.10.2010, 14:08 | #2 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
хм...должно быть вопрос либо слишком сложный, либо мало занятный...определенно, одно из двух
|
15.10.2010, 21:48 | #3 | ||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
Цитата:
|
||
15.10.2010, 23:56 | #4 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
В целом, из-за ошибок программиста. Мне недавно пришлось встретиться с такой вещью, как увеличение числа вызовов функции в таймауте - функция начинала вызывать себя по несколько раз, в конце концов браузер подвисал.
|
18.10.2010, 10:28 | #5 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
ну, рекурсия - дело понятное. В любом языке программирования бесконечная рекурсия (или достаточно глубокая) приведет к outofmemory. (хотя формально это утечкой и не является)
Код:
Меня больше интересуют ситуации, при которых память отъедается объектами, с которыми программа уже не работает, но сборщик по какой-то причине не удалил объект, либо просто еще не успел. Скажем, будет ли достаточно грамотным код вида: Код HTML:
var smth = new SomeObject({...}); smth = new SomeObject({...}); ... |
18.10.2010, 20:05 | #6 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
У Вас не правильное представление о работе броузера.
БРОУЗЕР НЕ РАБОТАЕТ КАК ОС. ОН УДАЛЯЕТ ОБЪЕКТЫ, НО НЕ УБИВАЕТ ПРОЦЕССЫ, СОЗДАННЫЕ ОБЪЕКТОМ. Ну, собственно от сюда все вытекающие... Если процесс не закончился и его результат используется в других функциях и броузере, то "убийство" создаёт потерянный процесс. Очень часто это возникает из-за неправильного ответа функции. Объекты чистить полезно, т.к. большое количество объектов, даже неиспользуемых, замедляет работу. |
20.10.2010, 22:58 | #7 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Цитата:
|
|
20.10.2010, 23:03 | #8 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Достали утечки памяти | Порфирий | Общие вопросы C/C++ | 4 | 22.12.2009 11:32 |
javascript | kettyrus | Помощь студентам | 1 | 03.10.2009 14:00 |
InterBase 7.1 - утечки памяти. | pushkin42 | БД в Delphi | 2 | 21.03.2007 16:15 |