Ответ 1
Отвечала сама, чтобы убедиться, что она не появляется под "без ответа". Я работал над плунгом, и он больше не теряет память. Я буду задавать этот вопрос, если кто-то найдет его полезным как не-утечка для повторной компиляции DOM.
Почему следующий plunkr вызывает утечку памяти при каждом запуске компиляции $?
http://plnkr.co/edit/HhB4croPKuN5TP2NPqq6
Я пишу директиву, которая иногда должна полностью перерисовывать свой HTML. Он делает это, создавая свой шаблон в виде строки, а затем загружая эту строку в компиляцию $, наконец, используя jQuery для удаления старой DOM и заменяя ее новым визуализируемым элементом.
Каждый раз, когда он это делает, приложение теряет несколько мегабайт памяти, часто сбой браузера. Снимок Chrome heaphot показывает, что дерево отдельных элементов DOM добавляется каждый раз, но у Plunkr по какой-то причине нет этой проблемы (хотя она все еще сильно протекает).
Что я делаю неправильно, что вызывает утечку памяти?
Это явно не так, как должны быть написаны директивы Angular, которые я знаю. Мой первый подход был бы комбинацией ng-повторов с другими двусторонними связями. К сожалению, это вызывает проблемы с производительностью, так как количество $watch-statements в области увеличивается. Немного рассуждая о том, почему я выбрал этот подход, я подробно расскажу об этом здесь: Как работает привязка данных в AngularJS?
Я работал над плунгом, и он больше не теряет память. Я буду задавать этот вопрос, если кто-то найдет его полезным как не-утечка для повторной компиляции DOM.
Отвечала сама, чтобы убедиться, что она не появляется под "без ответа". Я работал над плунгом, и он больше не теряет память. Я буду задавать этот вопрос, если кто-то найдет его полезным как не-утечка для повторной компиляции DOM.