我正在使用最新的 Jetty websocket 客户端,并且我有一个简单的客户端应用程序来接收来自服务器的视频流。该流使用大约 1 MB 的二进制块作为服务器推送发送。作为客户端套接字,我只是扩展了 Jetty 的 WebSocketAdapter 类,我的套接字中接收服务器推送的相关部分是:
@Override
public void onWebSocketBinary(final byte[] data, final int offset, final int length) {
dataCount += data.length;
}
由于客户端代码用于负载测试,因此我不会进一步处理数据,我只是希望数据会被代码丢弃。此外,为了模拟几个客户端,我创建了几个 WebSocketClient 实例和关联的套接字。
运行客户端时,java进程内存使用量不断增加,最终导致OutOfMemory的情况。我试图分析堆转储,我看到以下内容:
所以我的问题是,为什么字节数组使用的内存没有清理干净?内存消耗只是不断增长和无限增长。我可以做些什么来自己清理代码中的数组吗?