Warum bei Stream close() aufrufen.

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

wieso soll/muss man nach Verwendung von Streams immer close aufrufen? Wieso kann ein unbenutzter Stream von der VM nicht selber geschlossen werden?
 
S

SlaterB

Gast
man könnte doch unbenutzt() aufrufen, was dann einem komplizierten internen Hintergrundmechanismus paar Sekunden beansprucht, bis dieser dann close() aufruft

ohne Scherz ist aber vielleicht ein Objekt für den GarbageCollector gemeint,
wird der geschlossen? kann ja nun nicht mehr benutzt werden
 

Der Müde Joe

Top Contributor
Wieso soll man nach der Toilette spülen?
--> Damit aller Müll raus ist, der noch in der Schüssel ist....

Bildlich ausgesprochen.
 
G

Gast

Gast
ich meine auch, wieso den stream nicht einfach offenlassen und vom garbage collector entfernen lassen. habe mich da evtl. unpräzise ausgedrückt
 

Lim_Dul

Top Contributor
Klar geht das. Nur hast du keine Garantie das der Garbage Collector irgendwann vorbeikommt. Es kann auch bis zum Ende des Programms dauern.

Und bei Streams belegt man häufig externe Resourcen (TCP-Verbindungen, Dateien, etc.). Das Betriebssystem hat davon nur eine begrenzte Zahl zur Verfügung, daher sollte man die selber freigeben.
 
S

SlaterB

Gast
wie soll man noch etwas in ein Objekt schreiben um welches sich der GC kümmert, welches also im Programm nicht mehr referenziert wird?

dass sich der GC inidviduell für Streams was einfallen läßt wäre allerdings auch vermessen,
aber andererseits passiert das ja beim Programmende,
na vielleicht nicht mit den Stream-Objekten an sich sondern mit den vom Programm reservierten Systemressourcen auf tieferer Ebene
 

Ebenius

Top Contributor
thE_29 hat gesagt.:
Und woher soll der GC wissen ob du nicht noch was reinschreiben willst?!
Der GC weiß das genau, weil es keine Referenz (außer Phantom) mehr zum Stream gibt...

[edit] Slater hat's ja auch geschrieben; hatte ich überlesen... :shock:

Ebenius
 
G

Gast

Gast
OK, also was ist nun so schlimm nen Stream offenzulassen? Der belegte Speicher dürfte doch nicht so ins Gewicht fallen, oder?
 

byte

Top Contributor
Streams binden Systemresourcen. Ein close() gibt dieses Resourcen wieder frei.

Am besten liest Du Dich mal in die Thematik von Input / Output ein, wenn Du nicht verstehst, warum Programme nicht wild IO-Resourcen binden sollten.
 
G

Gast

Gast
Hallo,

danke für die Antworten. Ich habe folgendes dazu gefunden:

"The close() method should always be used when a program is done with a file. If a file is not closed, the program might end before the operating system has finished writing data to the file. The data written to the file might be lost!

Or it might not. Depends on how busy the operating system is. "

Es kann also passieren, dass Daten die ich in eine Datei schreibe verlorengehen, wenn ich das close nicht explizit aufrufe? Leider geht die Quelle nicht auf das warum ein. Ich weiss jetzt zwar, dass ich close() aufrufen sollte, wenn ich keinen Datenverlust riskieren will, aber nicht die Gründe.
 

Ebenius

Top Contributor
Es kann vor allem passieren, dass kein anderer die Datei öffnen kann, während Du sie zum Schreiben offen hast. Außerdem sind die Handles zu Dateien im System begrenzt. Und davon abgesehen ist es immer schlecht Resourcen für nix zu verbraten. Also: Ströme schließen, wenn man sie nicht mehr braucht.

Was gibt's da nicht zu verstehen?

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Stream close Java Basics - Anfänger-Themen 6
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
W Stream und LocalDate Java Basics - Anfänger-Themen 15
M Stream mit den ersten n natürlichen Zahlen Java Basics - Anfänger-Themen 4
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K Erste Schritte Stream-Aufruf vereinfachen Java Basics - Anfänger-Themen 3
I Datei als Stream aus Ressource laden? Java Basics - Anfänger-Themen 2
O Alternative zu Stream.forEach() Java Basics - Anfänger-Themen 6
Dimax stream in string[] speichern Java Basics - Anfänger-Themen 6
S Java Stream API Java Basics - Anfänger-Themen 6
A Stream Java Basics - Anfänger-Themen 14
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
J Count und Copy in Stream<Path> Java Basics - Anfänger-Themen 11
W for Schleife in allgemeingültiges Konstrukt aus Stream und Lambdas Java Basics - Anfänger-Themen 6
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
G refactoring mit stream Java Basics - Anfänger-Themen 27
P Java Verketten von Stream - Bedeutung der Anweisungen? Java Basics - Anfänger-Themen 3
nightsky_ Methoden (Stream) Collectors.toMap() Java Basics - Anfänger-Themen 2
W HTTP-Stream auf Ajax umbauen Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
E Stream closed - Obwohl nicht manuell geschlossen! Java Basics - Anfänger-Themen 0
N Java.io.ioexception: Stream closed Java Basics - Anfänger-Themen 2
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
S Input/Output nullpointerException beim schliessen von stream Java Basics - Anfänger-Themen 3
A Integer aus Stream to Double Java Basics - Anfänger-Themen 7
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
M Java Stream?! Java Basics - Anfänger-Themen 8
S Input/Output Data-Input/Output-Stream Java Basics - Anfänger-Themen 2
V Jar-Datei von Byte-Array oder Stream laden? Java Basics - Anfänger-Themen 9
J Input/Output Auf effiziente Weise einen Stream auszulesen Java Basics - Anfänger-Themen 5
A Prüfen ob Datei geöffnet ist bzw Stream finden Java Basics - Anfänger-Themen 2
H exception "java.io.IOException: Stream closed" Java Basics - Anfänger-Themen 10
Burny91 File.delete(file) geht nicht-Offener Stream aber WO? Java Basics - Anfänger-Themen 4
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
H Fehler-Stream grafisch umsetzen Java Basics - Anfänger-Themen 4
H Datentypen Byte-Array aus Stream lesen Java Basics - Anfänger-Themen 3
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
bambi0815 Text Datei Stream to Char[][] Java Basics - Anfänger-Themen 7
D JSP: IOException: Stream closed nach dispatchter.forward(..) Java Basics - Anfänger-Themen 13
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
P Stream Java Basics - Anfänger-Themen 4
alexpetri javax.xml.stream.* nicht gefunden Java Basics - Anfänger-Themen 3
M Stream unvollständig Java Basics - Anfänger-Themen 5
Zed Stream in Variable speichern. Java Basics - Anfänger-Themen 3
M Input/Output Stream aus einem String Java Basics - Anfänger-Themen 2
S Schreib Stream Java Basics - Anfänger-Themen 21
M Stream in String umwandeln Java Basics - Anfänger-Themen 5
K datei komplett als Stream oder ähnliches Java Basics - Anfänger-Themen 4
A Serialisierbarer Stream? - File per RMI versenden Java Basics - Anfänger-Themen 4
R Binary Stream in Bild umwandeln Java Basics - Anfänger-Themen 5
C Position im Objekt-Stream Java Basics - Anfänger-Themen 2
M Ausgabe in String anstatt auf Stream Java Basics - Anfänger-Themen 17
C Stream-Konzept Java Basics - Anfänger-Themen 2
A von Socket-Stream lesen Java Basics - Anfänger-Themen 4
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
S Close Möglichkeiten Java Basics - Anfänger-Themen 3
T socket.close aber verbindung besteht noch Java Basics - Anfänger-Themen 4
firefexx Input/Output close() bei mehreren Streams Java Basics - Anfänger-Themen 5
J CLOSE in JOptionPane Java Basics - Anfänger-Themen 7
D Mysql Connection Close? Java Basics - Anfänger-Themen 14
H File f close()? Java Basics - Anfänger-Themen 3
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
G [Verständnisfrage] flush() und close() Java Basics - Anfänger-Themen 6
N Problem mit BufferedReader und close() Java Basics - Anfänger-Themen 6
S window Close ? FrAge Java Basics - Anfänger-Themen 12
F Frame Close Frage Java Basics - Anfänger-Themen 17
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
H Kann man Methoden öfter aufrufen? Java Basics - Anfänger-Themen 2
L Webseite aufrufen (HTTP) Java Basics - Anfänger-Themen 8
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
T getAttribut in einer Methode aufrufen Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben