vue多页面应用,页面切换后,内存未释放

项目框架:

vuejs+iview
每个页面都是直接引用vuejs的库,并且new了一个新的vue实例

由于项目原因

无法使用webpack和vue-router做成单页面应用。(暂时) 浏览器环境都是IE浏览器,

问题复现

我使用了IE11提供的内存监听工具(快捷键ctrl+shift+u)(或使用任务管理的内存监听), 可以发现页面在切换or刷新后,
甚至页面切换至一个空的页面后, 内存并没有得到释放,

例如

原有内存是100Mb,页面操作后增加至150MB,页面跳转至一个空的内容页,内存还是150MB,或者降低了一些,但还是大于100MB

想请教

如何在页面离开or刷新后销毁所有已经创建的vue实例和javascript 对象。

请问是否有办法!
水平不足,虚心请教,

阅读 12.5k
2 个回答

js内存泄漏的定位是比较麻烦的,因为涉及到垃圾回收,很多时候,已经释放的内存还没有回收,要过一段时间才能看到占用量的下降,建议用chrome的Allocation timeline来监测比较准确:

clipboard.png

chrome的好处是可疑内存可以定位到准确的引用,但总的来说还是比较难找的。我一般都是连续进行循环操作多次(几十次),来判断是否真有内存泄漏,如果真有的话,可以重点关注DOM对象和事件有没有正确的处理,一般的js对象都不会有问题,因为垃圾是自动回收的,不再使用的js变量通常都自动回收掉了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题