Java OkHttp连接因克隆客户端而泄漏

Java OkHttp连接因克隆客户端而泄漏,java,okhttp,Java,Okhttp,我正在处理一个与Okhttp连接泄漏相关的问题。泄漏堆栈跟踪似乎指向在#L267中打开的此WebSocket连接: 当我运行问题本身中提供的测试时,我在日志上看到连接泄漏消息: WARNING: A connection to http://localhost:48271/ was leaked. Did you forget to close a response body? java.lang.Throwable: response.body().close() 但是,当我从一个新实例创建

我正在处理一个与Okhttp连接泄漏相关的问题。泄漏堆栈跟踪似乎指向在#L267中打开的此WebSocket连接:

当我运行问题本身中提供的测试时,我在日志上看到连接泄漏消息:

WARNING: A connection to http://localhost:48271/ was leaked. Did you forget to close a response body?
java.lang.Throwable: response.body().close()
但是,当我从一个新实例创建OkHttpClient而不是从上一个实例克隆它时,这些连接泄漏警告减少了3/4。克隆客户端是否容易出现连接泄漏?还是我做得不对?有没有办法确保我们是否能够处理这些连接泄漏警告消息


还有一件事,websocket是使用打开的,它已经实现了
AutoCloseable
。尽管尝试调用方提供的资源似乎可以避免这些警告。但我不确定它是否真的修复了泄漏的根本原因。

克隆与此无关。此警告依赖于垃圾回收器查找在关闭前超出范围的实例,此过程既不立即也不特别可靠。

您好,很抱歉响应延迟。我们正试图从我们的代码库中删除这些泄漏警告。在WebSocket操作中,我们应该在哪里执行
response.close()
?我在okhttp repo中没有看到任何内容。我们对克隆客户端持怀疑态度,但如果我们删除克隆客户端,我们可以并且将在WebSocket操作中读取超时。我正在尝试在onOpen和onFailure中关闭响应主体,但我总是会泄漏。是泄漏发生的地方,也是倾听者。如果你能看一看,我会非常感激的。
WARNING: A connection to http://localhost:48271/ was leaked. Did you forget to close a response body?
java.lang.Throwable: response.body().close()