项目框架:
vuejs+iview
每个页面都是直接引用vuejs的库,并且new了一个新的vue实例
由于项目原因
无法使用webpack和vue-router做成单页面应用。(暂时) 浏览器环境都是IE浏览器,
问题复现
我使用了IE11提供的内存监听工具(快捷键ctrl+shift+u)(或使用任务管理的内存监听), 可以发现页面在切换or刷新后,
甚至页面切换至一个空的页面后, 内存并没有得到释放,
例如
原有内存是100Mb,页面操作后增加至150MB,页面跳转至一个空的内容页,内存还是150MB,或者降低了一些,但还是大于100MB
想请教
如何在页面离开or刷新后销毁所有已经创建的vue实例和javascript 对象。
请问是否有办法!
水平不足,虚心请教,
js内存泄漏的定位是比较麻烦的,因为涉及到垃圾回收,很多时候,已经释放的内存还没有回收,要过一段时间才能看到占用量的下降,建议用chrome的Allocation timeline来监测比较准确:
chrome的好处是可疑内存可以定位到准确的引用,但总的来说还是比较难找的。我一般都是连续进行循环操作多次(几十次),来判断是否真有内存泄漏,如果真有的话,可以重点关注DOM对象和事件有没有正确的处理,一般的js对象都不会有问题,因为垃圾是自动回收的,不再使用的js变量通常都自动回收掉了。