【发布时间】:2018-01-22 19:40:00
【问题描述】:
我有一些代码可以使用org.apache.http.client.HttpClient 下载文件。现在我的 IDE 告诉我我有一个 Potential resource leak: 'client' may not be closed。具体代码为:
HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
我做了一些研究,发现了EntityUtils.consume(entity);,但这并不能解决client 的资源泄漏问题。
所以我的问题是,这真的是资源泄漏吗?如果是,我该如何正确关闭它?
【问题讨论】:
-
这个问题和你的类似吗? stackoverflow.com/questions/4724193/…
-
据我所知,不相似
-
我相信,一旦你完成调用(可能在 finally 块中)关闭 HttpClient 应该可以解决资源泄漏问题。 hc.apache.org/httpcomponents-client-dev/tutorial/html/…。 IDE 是否还提供了对该问题的潜在修复?
-
那些是
Closeable-types,我的是“non-closeable-types”。所以我正在使用 eclipse 并且它不提供直接修复,但它建议将所有调用移动到像HttpEntity entity = HttpClientBuilder.create().build().execute(request).getEntity();这样的 1 行中,现在我不再收到泄漏消息了。不确定它是否被认为是一个适当的修复(也不确定我是否应该将其作为答案发布或只是删除问题) -
我认为您可以将其发布为答案,以便至少遇到此问题的人得到修复。谢谢!
标签: java memory-leaks apache-httpclient-4.x