Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по утечке памяти (https://javascript.ru/forum/misc/5033-vopros-po-utechke-pamyati.html)

micscr 10.09.2009 08:27

Вопрос по утечке памяти
 
Код javascript:
function one()
{
    var obj1=new Object;
    obj1.name='sasha';
    obj1.age=12;
    //работаем с  obj1
    //
}
one();

//дальнейшая работа
Вопрос: идет ли утечка памяти по obj1 или среда автоматически разрушит объект при выходе из области видимости единственной ссылки?
создавал в функции объект XMLHttpRequest так он прекрасно работает после. Или есть разница между видами объектов?
Спасибо за хорошую ссылку почитать или ответ.

Gvozd 10.09.2009 14:55

Цитата:

Сообщение от micscr
создавал в функции объект XMLHttpRequest так он прекрасно работает после

наврено вы забыли написать var
http://javascript.ru/basic/functions#oblasti-vidimosti
http://javascript.ru/basic/closure

e1f 10.09.2009 15:48

Цитата:

Сообщение от micscr (Сообщение 29733)
создавал в функции объект XMLHttpRequest так он прекрасно работает после.

Gvozd, ТС скорее всего имел в виду, почему выполняется запрос и срабатывает callback здесь, ссылок-то вроде бы не осталось:
var s = new XMLHttpRequest(); 
s.open('GET', url, true); 
s.onreadystatechange = function(){
  if (this.readyState == 4) console.info('Completed')
}; 
s.send(null); 
s = null

Gvozd 10.09.2009 17:42

e1f,
хм
вполне возможно
ждем его ответа

micscr 10.09.2009 18:06

Примерно как e1f писал, вот так по сути у меня:
function xxx()
{
    var s = new XMLHttpRequest(); 
    s.open('GET', url, true); 
    s.onreadystatechange = function(){
       if (this.readyState == 4) console.info('Completed')
    }; 
    s.send(null); 
}

Т.е. в функции объект задан как локальный var.
По сути после выхода из функции ссылка на объект станет недоступной, а сам объект еще будет работать - прорабатывать свои события и верно завершится на readyState == 4. Почему? Что с ним будет дальше?
Gvozd спасибо за ссылки, сейчас читаю.

e1f 10.09.2009 20:12

micscr,
Возможно поможет статья http://www.w3.org/TR/XMLHttpRequest/. Судя по написанному, XMLHttpRequest связан с документом, в контексте которого вызывается, так что мб ссылка на него хранится где-то еще.

micscr 11.09.2009 09:07

e1f спасибо, почитаю.
Не подскажите еще как отлаживать скрипты - например просматривать все переменные в памяти и в определенный момент, а то вчера почитал про замыкания, и понял что без отладки многие вещи не совсем понятны.

e1f 11.09.2009 13:37

Ну, в ФФ firebug спешит на помощь. В Опере есть dragonfly, в ИЕ8 - свой встроенный дебаггер. Насчет драгонфлая хз -- он унылое г.., а фаербаг может все :) (ну кофе разве что не варит)

Kolyaj 11.09.2009 15:35

Цитата:

Сообщение от e1f
(ну кофе разве что не варит)

Можно плагин к фаербагу написать.


Часовой пояс GMT +3, время: 00:00.