在React Native中使用websocket blob实现时,我们遇到了内存泄漏,无法完全找到问题所在。
使用Xcode的仪器,我们可以看到,问题最有可能的方式发生了框架处理二进制消息在RCTSRWebSocket.m在或也许以后调用树RCTWebSocketModule.m
任何具有Object-C技能的人都可以看到为什么某些内存(可能是分配给接收到的消息)没有正确释放的原因?
这个问题终于可以解决了。在深入研究WebSockets的实现,尤其是blob的实现之后,我发现,只要不直接关闭它们,所有的blob都会保留在内存中。
这意味着在处理完接收到的数据之后,您应该像这样关闭Blob:
ws.onmessage = function (e) {
// Do whatever with the data through e.data.
const data = e.data;
// When you are done with the received data, you must close the Blob:
e.data.close();
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句