如何清理VUE内存?
分享一下我是怎么解决这个问题的,原因大概在两方面:
一、把three.js中的对象定义到了data里
首先非数据的东西不要挂在到data上,比如three.js中的renderer, camera,scene这些对象,可以在created或者mounted钩子里设置到this上或者存储在其它变量里,如果是定义在data上的话,Vue会遍历整个对象树设置对应的getter/setter,造成不必要的性能开销。
二、组件销毁时没有做清理工作
如果是把renderer,mesh这些对象存储在当前vm实例上的话,需要手动清理(这里假设Vue不对自定义属性做清理,未验证过)。特别是你开启了热更新,每改动一次js代码实例就被销毁和重新创建,如果不断掉引用,它们就会一直保存在内存中,可想而知占用有多大。
最后,记得每一次动画里的requestAnimationFrame都要把id保存下来,在组件销毁时cancelAnimationFrame掉。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有