2013-06-06 2 views
6

Где находится блокировка магазина в стиле Java (по стандарту): куча или стек?
Есть ли третье явное место для закрытия?Закрытие Javascript на куче или стеке?

+2

Возможно, вы захотите ознакомиться с этой [очень хорошей записью] (http://dmitrysoshnikov.com/ecmascript/chapter-6-closures/), чтобы найти ответы. – Phoenix

ответ

5

В конце концов, это деталь реализации времени выполнения. See Phoenix link

Что касается реализаций, то для хранения локальных переменных после разрушения контекста реализация на основе стека больше не подходит (поскольку это противоречит определению структуры на основе стека). Поэтому в этом случае закрытые данные родительского контекста сохраняются в распределении динамической памяти (в «куче», т. Е. Реализации на основе кучи), с использованием сборщика мусора (GC) и подсчета ссылок. Такие системы менее эффективны по скорости, чем системы на основе стеков. Однако реализации могут всегда оптимизировать его: на этапе анализа, чтобы выяснить, используются ли свободные переменные в функции, и в зависимости от этого решают - помещать данные в стек или в «кучу».

Смежные вопросы