Does ByteArrayOutputStream.close()
really release the memory?
No. It does absolutely nothing. You can look at its source code:
public void close() throws IOException {
}
To release the memory, make sure there are no references to it and let the Garbage Collector do its thing. Just like with any other normal object.
File- and Socket-based streams are special because they use non-memory OS resources (file handles) that you can run out of independantly of memory. That's why closing them explicitly is important. But this does not apply to the purely memory-based ByteArrayOutputStream
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…