В веб_броузере Microsoft Internet Explorer используется достаточно слабая разно_ видность механизма сборки мусора для объектов ActiveX и DOM_элементов на
8.9. Конструктор Function()
|
|
|
|
стороне клиента. Для этих элементов на стороне клиента выполняется подсчет ссылок, и они утилизируются интерпретатором, только когда значение счетчика ссылок достигает нуля. Однако такая схема оказывается неработоспособной в случае циклических ссылок, например, когда базовый JavaScript_объект ссыла_ ется на элемент документа, а этот элемент имеет свойство (например, обработчик события), которое, в свою очередь, хранит ссылку на базовый JavaScript_объект.
Такого рода циклические ссылки часто возникают при работе с замыканиями. При использовании техники замыканий не забывайте, что объект вызова замк_ нутой функции, включающий в себя все аргументы функции и локальные пере_ менные, будет продолжать существовать до тех пор, пока существует само замы_ кание. Если какие_либо аргументы функции или локальные переменные ссыла_ ются на объект, может возникнуть утечка памяти.
Обсуждение этой проблемы выходит за рамки темы книги. За дополнительной информацией обращайтесь по адресу: http://msdn.microsoft.com/library/en'us/ IETechCol/dnwebgen/ie_leak_patterns.asp.