Как работает сборщик мусора JavaScript в браузере? - PullRequest
2 голосов
/ 14 декабря 2011

Должен ли я сам уничтожать экземпляры?... если я не назначу им переменную ... они автоматически исчезнут?

new ImageUploadView();

против

var Iu = ImageUploadView();

Ответы [ 3 ]

3 голосов
/ 14 декабря 2011

Если в javascript нет ссылки на объект, сборщик мусора очистит его.

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

В вашем первом примере кода:

new ImageUploadView();

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

Если вы второй пример кода:

var Iu = ImageUploadView();

, пока переменная Iu существует и остается в области видимости, она будет содержать все, что возвращает функция ImageUploadView(). Обратите внимание, что второй пример - это просто выполнение функции и сохранение ее значения. Это не обязательно создает что-либо. Если ImageUploadView() просто возвращает true, то это все, что будет содержать переменная Iu.

0 голосов
/ 14 декабря 2011

Для больших объектов не обязательно полагать, что браузеры, встроенные в сборщик мусора, будут очищаться, как только выйдут за пределы области видимости. Вам лучше очистить это самостоятельно, используя "удалить". Например:

delete MyImageUploadView;

Редактировать: может быть предпочтительнее установить объект равным нулю, если на него не ссылаются как на свойство.

0 голосов
/ 14 декабря 2011

Первый метод в порядке. Если предположить, что экземпляр ImageUploadView соответствующим образом очищается после себя, он будет собран сборщиком мусора.

...