Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2009, 19:43
Аспирант
Отправить личное сообщение для Yazla Посмотреть профиль Найти все сообщения от Yazla
 
Регистрация: 01.11.2009
Сообщений: 31

Как происходит утечка памяти в даном случае?
http://webo.in/articles/habrahabr/18...-memory-leaks/ отличная статья по утечкам памяти, но одного примера я немогу понять "Постраничные утечки".
Цытата:
"Базовый шаблон заключается во временном соединении двух только что созданных элементов вместе, что создает область видимости, в которой определен дочерний элемент. Затем, при включении этого двух-элементного дерева в основное, они оба наследуют контекст всего документа, и происходит утечка во временном объекте (чей контекст мы не закрыли)."

Пример из статьи:
function LeakMemory()
	{
	    var hostElement = document.getElementById("hostElement");

	    // Давайте посмотрим, что происходит с памятью в Диспетчере Задач

            for(i = 0; i < 5000; i++)
	    {
		var parentDiv =
		    document.createElement("<div onClick='foo()'>");
		var childDiv =
		    document.createElement("<div onClick='foo()'>");

                // Здесь вызывается утечка на временном объекте
		parentDiv.appendChild(childDiv);
		hostElement.appendChild(parentDiv);
		hostElement.removeChild(parentDiv);
		parentDiv.removeChild(childDiv);
		parentDiv = null;
		childDiv = null;
            }
	    hostElement = null;
	}


Может ктото объяснить пожагово, как происходит это утчека?

Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2009, 10:35
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Из-за вот этого:
Цитата:
onClick='foo()'
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2009, 12:02
Аспирант
Отправить личное сообщение для Yazla Посмотреть профиль Найти все сообщения от Yazla
 
Регистрация: 01.11.2009
Сообщений: 31

Спасибо e1f, это я понял, но я немогу понять каким образом создается эта область видимости о которой сказано здесь:
Цитата:
Базовый шаблон заключается во временном соединении двух только что созданных элементов вместе, что создает область видимости, в которой определен дочерний элемент.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти jeepers Общие вопросы Javascript 3 05.12.2014 00:13
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 13:45
Подскажите как узнать существует ли объект в памяти? Yazla Общие вопросы Javascript 2 05.11.2009 19:05
Утечки памяти: как сделать ? Draeden Events/DOM/Window 10 30.08.2009 17:16