有没有人有vue中使用websocket获取数据后使用vue.set渲染数据导致内存溢出的经历?
王文銮 2019-01-30 02:17:06 ### 问题描述
在我们的项目中,前后台使用websocket连接,整个项目使用的vue框架。websocket后台传输频率为**4次/s**,每次的数据量为**2KB**。前台使用onmessage方法接收到数据之后进行处理并使用this.$set()方法将数据更新进数组中。在这个过程中出现了内存泄露的问题,表现形式为chrome内存急剧升高。
### 自己尝试过哪些方法
在百度和google之后,并经过自己的测试,发现Vue过于频繁的使用this.$set方法会导致内存泄漏,而直接赋值进行替换则不会,于是将所有的this.$set方法更新数据改为了重新复制,发现有效降低了内存泄露的问题。但是并没有完全解决。在测试中,我将websocket的onmessage方法全部注释掉之后,发现chrome内存上涨的情况于前面修改之后上涨的速度一致。当将websocket整个注释掉之后chrome内存才不再上涨。
### 期待的结果
希望在使用websocket的过程中chrome内存不在继续上涨,麻烦大佬看一下是vue使用的有问题还是websocket