React Native中的iOS WebSocket内存问题

斯蒂芬·克里斯滕森

在React Native中使用websocket blob实现时,我们遇到了内存泄漏,无法完全找到问题所在。

使用Xcode的仪器,我们可以看到,问题最有可能的方式发生了框架处理二进制消息在RCTSRWebSocket.m在或也许以后调用树RCTWebSocketModule.m

任何具有Object-C技能的人都可以看到为什么某些内存(可能是分配给接收到的消息)没有正确释放的原因?

链接到Github问题

内存使用情况

调试信息

通话树

斯蒂芬·克里斯滕森

这个问题终于可以解决了。在深入研究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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章