Unter Berücksichtigung von Java-Code unter:Schließt DataInputStream den umschlossenen InputSream, wenn der Müll erfasst wird?
void test(InputStream inputStream) {
DataInputStream dataInputStream = new DataInputStream(inputStream);
return;
}
wenn test
Methode zurückgibt, wird Datainputstream (irgendwann) seinen Müll gesammelt. Schließt DataInputStream den inneren Stream in seinem Finalizer?
Ich konnte keine explizite Aussage finden, wenn es oder nicht tut. Gibt es eine offizielle Dokumentation über Verhalten? Kannst du bitte darauf hinweisen, wenn es einen gibt?
Danke.
Edit: Ich frage nicht, ob das Schließen von DataInputStream auch inneren Stream schließt. Ich frage was, wenn ich nicht schließe und der äußere Strom Müll ist, der gesammelt wird, während das Innere immer noch Referenzen darauf hat, also lebendig.
@Tunaki das OP fragte, ob der Stream ohne eine explizite enge Verbindung wegen eines GC Finalizer geschlossen wird - und die Antwort ist nein, da es keinen Finalizer gibt – wero
@wero Ja, das ist, was ich frage. Ist "Kein solcher Finalizer" an irgendeinem Ort dokumentiert? Ist es implementierungsspezifisch oder nach Spezifikation vorgeschrieben? Irgendwelche Links? Vielen Dank. – volkan
@Volkan einfach auf die Quelle von 'DataInputStream' schauen und die Hierarchie aufarbeiten - es gibt keinen Finalizer. Die einzigen Klassen in 'java.io' mit einem Finalizer sind' FileInputStream' und 'FileOutputStream'. Ich weiß nicht, ob das irgendwo dokumentiert ist. – wero