Экземпляры, на которые ссылается только «bound _this», не подвергаются сборке мусора

У меня вопрос по сбору мусора -в google chrome (Версия 20.0.1132.47, Ubuntu 11.04 64bit ).

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

Взгляните на следующий скриншотScreenshot of heap-dump showing an instance (child) referenced only by 'bound_this'

На экземпляр 'child @610739' ссылаются только 'привязанные _this' экземпляры, принадлежащие функциям самого дочернего экземпляра -. Итак, насколько я понимаю, дочерний -экземпляр должен быть собран -мусором, поскольку единственная другая ссылка, удерживающая его, — это сам дочерний -экземпляр (через «связанные _this» функции ).

Я использую служебную функцию «bindAll» underscore.js(underscore.js #bindAll)это соответствует «родной _bind» функции chrome(ECMA Script wiki на привязке _это)

Я упускаю здесь что-то очевидное, и если да, может ли кто-нибудь объяснить, что поддерживает эти экземпляры?

ОБНОВЛЕНИЕ:
Тем временем я протестировал это же приложение в chrominium (18.0.1025.168 (Developer Build 134367 Linux )Ubuntu 11.10 ), которое не показывает эти оборванные экземпляры..

ОБНОВЛЕНИЕ 2:
Следуя совету Esailijas предоставить фрагмент jsfiddle, я создал его(http://jsfiddle.net/8gSTR/1/)это имитирует то, что я в основном делаю. Запуск этой скрипки, к сожалению, не показывает неправильное поведение, которое я испытываю в своем приложении.Дамп кучи -, полученный, когда на экземпляры 'a' -все еще ссылаются, выглядит примерно так же, несмотря на ссылку из массива window.o, который поддерживает экземпляры живыми : Heap-dump taken during execution of jsfiddle mentioned above

. Поскольку в моем случае такая ссылка отсутствует (скриншот 1 )Я не знаю, что мешает хрому освободить эти экземпляры...

ОБНОВЛЕНИЕ 3:
Следовал совету loislos, чтобы включить скрытые свойства. Результат (с одной из развернутых ветвей )можно увидеть на следующем снимке экрана, но я не продвигаюсь дальше.Heap-dump with hidden properties enabled

33
задан Clemens Sum 21 July 2012 в 08:22
поделиться