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运行它,查看内存配置文件,然后从状态列表来回导航到在安装时生成的示例列表。自述文件中还提供了屏幕截图
我希望隐藏的组件销毁后可以清除它们的内存,并且即使您将应用程序打开几分钟,垃圾收集器也不会减轻负载。
有人在应用程序保留的内存背后有任何理由吗?是否有更好的方法来完成类似于这样的路由策略,而不会导致内存泄漏,或者关于程序流的处理是不好的策略?
答案 0 :(得分:0)
对于面临与此类似的内存泄漏问题的任何人,答案都在于更新。 面对此问题的项目针对: 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
现在,一旦移开,就会释放完全相同的结构。