我们在 React Native 中使用 websocket blob 实现时遇到内存泄漏,无法完全定位问题。
使用 Xcode Instruments 我们可以看到问题很可能发生在框架处理 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();
};
关于React Native 中的 iOS websocket 内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395122/