Nativescript Vue v-if 内存泄漏

Nativescript Vue v-if memory leak

问题

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,查看内存配置文件,并在状态列表和安装时生成的示例列表之间来回导航。自述文件中还提供了屏幕截图

我希望隐藏组件的内存在它们被销毁后被清理,目前即使你让应用程序打开几分钟,垃圾收集器也不会减少负载。

问题(编辑)

有人知道应用程序占用内存背后的原因吗?有没有更好的方法来完成类似于此的路由策略,不会导致内存泄漏,或者关于程序流的一些错误策略?

对于任何面临类似内存泄漏问题的人来说,答案在于更新。 面临这个问题的项目是针对: nativescript ios 运行时:5.0.0 nativescript android 运行时:5.0.0 tns-core-modules:5.0.2 nativescript-vue: 2.0.0

更新到以下版本解决了这个问题。 nativescript ios 运行时:5.4.0 nativescript android 运行时:5.4.0 tns-core-modules:5.4.0 nativescript-vue: 2.2.2

现在,一旦导航离开,就会释放完全相同的结构。