Nativescript Vue v-if утечка памяти - PullRequest
0 голосов
/ 15 мая 2019

Issue

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

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

вопрос (редактировать)

Есть ли у кого-нибудь какие-либо соображения относительно памяти, удерживаемой приложением?Есть ли лучший способ реализовать стратегию маршрутизации, подобную этой, которая не вызывала бы утечку памяти или что-то плохое в реализации программы?

1 Ответ

0 голосов
/ 15 мая 2019

Для тех, кто сталкивается с проблемами утечки памяти, подобными этим, ответ заключается в обновлении. Проекты, столкнувшиеся с этой проблемой, были скомпилированы на основе: время выполнения nativescript ios: 5.0.0 nativescript android runtime: 5.0.0 tns-core-modules: 5.0.2 nativescript-vue: 2.0.0

Обновление до следующего исправило проблему. время выполнения nativescript ios: 5.4.0 nativescript android runtime: 5.4.0 tns-core-modules: 5.4.0 nativescript-vue: 2.2.2

Теперь та же самая структура освобождается после перехода от.

...