Joan Balaguero wrote:
Hello,
I’ve implemented the following code to send a request, read the response and
returns back the connection to the pool:
(…)
Try
{
(…)
entity = this.objHttp.execute(objPost));
if (entity != null)
{
bis = new BufferedInputStream(entity.getContent());
ByteArrayOutputStream buffer = new
ByteArrayOutputStream(httpOutBufferSize);
byte[] tmp = new byte[httpOutBufferSize];
int numBytesRead = 0;
while ((numBytesRead = bis.read(tmp)) >= 0) buffer.write(tmp, 0,
numBytesRead);
bis.close();
bis = null;
}
}
Catch (Exception e) { throw new ProxyServletException(); }
Finally
{
If (bis != null)
{
Try { bis.close(); bis = null; } catch (Exception e1) {}
}
If (entity != null)
{
Try { entity.consumeContent(); } catch (Exception e1) {}
}
}
With this code:
1. The connection is returned back to the pool correctly (the pool
never becomes exhausted).
2. But I have more and more instances of java.net.* classes in my heap
histogram:
Joan
There is no need for so much code. Reliable connection release can be
implemented much simpler:
http://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.1/httpclient/src/examples/org/apache/http/examples/client/ClientConnectionRelease.java
For example:
SockSocketImpl (number of instances)
12:30 19.517
13:30 70.731
14:00 107.061
SocketInputStream
12:30 907
13:30 68.650
14:00 103.568
It seems that the connection is returned back to the pool but the resources
associated with the http response are not freed up. At 12:20 I started
Tomcat, and the load from 12:20 since now is similar.
Is there any error in my code that I’m not able to see?
HttpClient is not known to leak SockSocketImpl instances. In any way,
please upgrade to the latest SVN snapshot of HttpCore and re-test your
application.
http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/
If the problem persists please try to gather more information about the
problem by turning on context logging for connection management /
request execution as described here:
http://hc.apache.org/httpcomponents-client-4.0.1/logging.html
Oleg
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]