Проблема
https://github.com/nativescript-vue/nativescript-vue/issues/492
краткий синопсис
Используя настраиваемую стратегию маршрутизации вкладок в Nativescript-Vue, я обнаружил, что в моем приложении происходит утечка памяти. Стратегия маршрутизации полагается на один всеобъемлющий компонент, который будет переключать активные компоненты с помощью оператора v-if. Когда пользователь переходит на новую страницу, оператор v-if скроет (и уничтожит) старую страницу и покажет (и смонтирует) новую страницу. Теоретически старая страница должна быть уничтожена, а память собрана сборщиком мусора; однако на практике память накапливается и, кажется, никогда не освобождается из приложения, даже при вызове сборщика мусора вручную.
тестирование и воспроизведение
Эта проблема была протестирована и обнаружена на реальном устройстве iOS (у эмулятора, похоже, нет проблем с памятью, но я читал, что это не похоже на настоящее устройство). Приведенная выше проблема github может предоставить некоторые дополнительные сведения, а связанный ниже репозиторий демонстрирует минимальное воспроизведение, вызывающее утечку памяти.
Воспроизведение этой ошибки можно найти на странице https://github.com/geodav-tech/nativescript-vue-memory-leak.
После сборки проекта запустите его через xcode, посмотрите профиль памяти и переходите от списка состояний к списку примеров, который создается при монтировании. скриншоты также предоставлены в readme
Я ожидаю, что память скрытых компонентов будет очищена после их уничтожения, и в настоящее время, даже если вы оставите приложение открытым на несколько минут, сборщик мусора не снизит нагрузку.
вопрос (править)
Есть ли у кого-нибудь аргументы в пользу памяти, удерживаемой приложением? Есть ли лучший способ реализовать стратегию маршрутизации, подобную этой, которая не вызывала бы утечку памяти, или что-то в потоке программы является плохой стратегией?
hide()
илиdestroy()
методы, чтобы этого избежать? Дополнительные примеры можно найти здесь: vuejs.org/v2/cookbook/avoiding-memory -leaks.html - person Fabio Zanchi   schedule 15.05.2019destroy()
для вызова. - person Shawn Pacarar   schedule 15.05.2019