Issue #4179 SendCallback GC
The HttpConnection.SendCallback nulls it's reference to buffers and callbacks after completion to assist with easy GC, since the connection callback is a long lived instance. Signed-off-by: Greg Wilkins <gregw@webtide.com>
This commit is contained in:
parent
b48873f33b
commit
faac5d7f04
|
@ -848,19 +848,22 @@ public class HttpConnection extends AbstractConnection implements Runnable, Http
|
|||
}
|
||||
}
|
||||
|
||||
private void releaseHeader()
|
||||
private Callback release()
|
||||
{
|
||||
ByteBuffer h = _header;
|
||||
Callback complete = _callback;
|
||||
_callback = null;
|
||||
_info = null;
|
||||
_content = null;
|
||||
if (_header != null)
|
||||
_bufferPool.release(_header);
|
||||
_header = null;
|
||||
if (h != null)
|
||||
_bufferPool.release(h);
|
||||
return complete;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCompleteSuccess()
|
||||
{
|
||||
releaseHeader();
|
||||
_callback.succeeded();
|
||||
release().succeeded();
|
||||
if (_shutdownOut)
|
||||
getEndPoint().shutdownOutput();
|
||||
}
|
||||
|
@ -868,8 +871,7 @@ public class HttpConnection extends AbstractConnection implements Runnable, Http
|
|||
@Override
|
||||
public void onCompleteFailure(final Throwable x)
|
||||
{
|
||||
releaseHeader();
|
||||
failedCallback(_callback, x);
|
||||
failedCallback(release(), x);
|
||||
if (_shutdownOut)
|
||||
getEndPoint().shutdownOutput();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue