The stream must be closed to ensure the native resources associated with its internal Deflater instance are cleaned up early, instead of waiting for GC to identify the dead object and finialize it. Change-Id: Ic31b5df563f19404ed4682556999f4332aa61562tags/v1.3.0.201202121842-rc4
@@ -101,8 +101,11 @@ class SmartOutputStream extends TemporaryBuffer { | |||
TemporaryBuffer gzbuf = new TemporaryBuffer.Heap(LIMIT); | |||
try { | |||
GZIPOutputStream gzip = new GZIPOutputStream(gzbuf); | |||
out.writeTo(gzip, null); | |||
gzip.close(); | |||
try { | |||
out.writeTo(gzip, null); | |||
} finally { | |||
gzip.close(); | |||
} | |||
if (gzbuf.length() < out.length()) { | |||
out = gzbuf; | |||
rsp.setHeader(HDR_CONTENT_ENCODING, ENCODING_GZIP); |