我发现在某些情况下(GZIPInputStream抛出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));
}
......
}