我发现对于某些情况(GZIPInputStream throw IOException),存在泄漏-在第一条语句中构造的 GZIPInputStream 的 Inflater 成员未通过函数“end()”正确释放。在这种情况下,GZIPInputStream 没有被构造,所以调用函数不能关闭它。GZIPInputStream 真的错了吗?
public GZIPInputStream(InputStream is, int size) throws IOException {
super(is, new Inflater(true), size);
byte[] header = new byte[10];
readFully(header, 0, header.length);
int magic = getShort(header, 0);
if (magic != GZIP_MAGIC) {
throw new IOException(String.format("unknown format (magic number %x)", magic));
}
......
}