Too many open files

Status
Nicht offen für weitere Antworten.

jimbojones34

Mitglied
Hallo,

ich probiere mal das Problem so genau wie möglich zu beschreiben. Leider bekomme ich bei meinem Tool, nach längerer Laufzeit die IO.File Fehlermeldung: "Too many open Files" Ich meine 34 steht da auch noch bei. Habe den genauen Wortlaut leider gerade nicht da, dafür müsste das Tool erst wieder Stunden laufen.


Zum genaueren Problem:
Ich starte einige male
Code:
Runtime.getRuntime().exec(externes Programm)
Insgesamt schließe habe ich alle Input- und Outputstreams. Ist alles im finally block. Jetzt habe ich mir das Tool schon mit JProfiler angeschaut und interessanterweise werden die
Code:
java.io.FileInputStreams
und
Code:
java.io.FileOutputStreams
sukzessive mehr. Das kann ich mir einfach nicht erklären. Öffne den Stream, arbeite drauf und close sie dann wieder. Von daher dürfe das nicht mehr werden. Gleiches gilt für den java.io.FileDescriptor.

So, das Problem in Kürze, ich hoffe man versteht worum es geht.

Mir sind jetzt die Ideen ausgegangen, hat vielleicht wer noch ‘nen Vorschlag oder ne Idee für mich?
 
S

Spacerat

Gast
Das könnte an so einem Konstrukt liegen (ich verwende mal ein simples Beispiel mit Strings):
Code:
for(int n = 0; n < 1000; n++) String tmp = "irgendwas";
Das hat zur Folge, das "tmp" bei jedem Durchlauf neu definiert und initialisiert wird. Ne Menge Arbeit für den "GC" die Ex-Definition sammt zu eliminierender Referenz wieder zu finden. Die Lösung sieht etwa so aus:
Code:
String tmp = null;
for(int n = 0; n < 1000; n++) tmp = "irgendwas";
Auf diese Art bleibt die Ex-Definition erhalten, und der "GC" kann die alte Referenz sofort eliminieren, wenn sie nicht noch woanders verwendet wird.

mfg Spacerat
 

didjitalist

Bekanntes Mitglied
solche lokal definierten, kurzlebigen objekte kann der GC extrem effizient wieder abräumen. hat aber mit dem thema an sich nichts zu tun. ich tippe eher drauf, dass die streams doch nicht geschlossen werden, oder du zu schnell, zu viele descriptoren anforderst, die das zugrundeliegende FileSystem nicht schnell genug wieder freigeben kann.
 

jimbojones34

Mitglied
Mh okay, das gucke ich mal nach, denke aber, das ich das schon so gemacht habe wie dein Vorschalg. Führt das denn, falls es nicht so gemacht ist dazu, das die FileInputStreams, FileOutputStreams und FileDescriptore so ansteigen, ich meine, der GC müsste dann doch, zwar langsam, aber irgendwann ja doch mal den Müll wegwerfen oder?

ich wollte das Limit an Files unter Linux auch hochsetzen, aber irgendwie kennt der Rechner den ulimit Befehl nicht. Aber selbst wenn, dann wäre das keine gute Lösung.
 
S

Spacerat

Gast
der GC müsste dann doch, zwar langsam, aber irgendwann ja doch mal den Müll wegwerfen oder?
Ja... das dachte ich auch mal... bis ich meinen Code mal durch 'nen Profiler gejagt habe. Soviel zur "Effizienz" des "GC" und dazu, dass mein voriger Beitrag nichts mit dem Thema zu tun hatte.

mfg Spacerat
 

jimbojones34

Mitglied
Okay, dann gucke ich mir das mal an. Dann ist es allerdings schwer, den Fehler einzugrenzen, denn wenn auch Varibalen was mit dem FileInputStream usw. zu tun haben, dann kann das ja jede Schleife usw. sein. Klar ist mir das aber echt noch nicht, was normale Varibalen mit den Streams zu tun haben.
 

didjitalist

Bekanntes Mitglied
mag ja sein, dass der GC die nicht sofort wieder wegschmeisst, aber mit dem problem hat es trotzdem nicht zu tun. bleib bei meiner vermutung, dass irgendein stream halt doch nicht geschlossen wird. vielleicht der error stream, den liest ja normalerweise eh niemand ein :D
 

jimbojones34

Mitglied
Eine besch.. Sache, muss ich mich mal durch den Code schaue. Das habe ich schon und eigentlich meine ich alles zu schließen, aber der Errorstream ist mal wieder ne neue Möglichkeit :)
 
G

Gelöschtes Mitglied 5909

Gast
ich hatte das gleiche problem auch mal, es lag nicht daran dass ich die Dateien nicht geschlossen hatte sondern dass ich zwischendurch zu viele offene dateien hatte. Du musst versuchen dass du die Anzahl der gleichzeitig offenen filehandles verringerst. Bei mir ging das damals indem ich die ankommenden daten sortiert habe, vielleicht klappt ja bei dir ähnliches. Das Problem trat bei mir auch nur unter Linux und nicht unter Windows auf, was mich anfangs verwirrt hatte.
 

Wildcard

Top Contributor
Der GC ist sicherlich nicht das Problem. Wenn der Stream richtig geschlossen wird, wird auch das File Handle geschlossen, das ist völlig unabhängig davon wann denn nun das Stream Objekt vom GC eingesammelt wird.
 
G

Guest

Gast
Wildcard hat gesagt.:
Der GC ist sicherlich nicht das Problem. Wenn der Stream richtig geschlossen wird, wird auch das File Handle geschlossen, das ist völlig unabhängig davon wann denn nun das Stream Objekt vom GC eingesammelt wird.

So würd ich das auch sehen, ich mache den Stream auf und dann wieder zu, daher ist es mir ja so ein Rätsel, wieso sie die sukzessieve aufsummieren. Ich werde mich aber noch mal genau angucken müssen, was JProfiler da ganz genau in der Accomplished View anzeigt, nicht das der da auch was vermurkst.
 

Ebenius

Top Contributor
Unter Linux? Wie oft machst Du denn mit exec Prozesse auf? Pro Prozess gibt es drei Ströme; 1x InputStream, 2x OutputStream. Bin mir nicht ganz sicher, aber im Linux würde ich erwarten, dass es sich im FileInputStreams und FileOutputStreams handelt. Nur eine Idee... :-/

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A External Sort - too many open files Allgemeine Java-Themen 6
J Too many files open Allgemeine Java-Themen 4
K "Too many open files" bei Property List Allgemeine Java-Themen 5
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
O too many window handles? <-- Warum? Allgemeine Java-Themen 18
G To many Code? Was soll der scheiß? Allgemeine Java-Themen 11
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
C Microsoft unterstützt Open JDK Allgemeine Java-Themen 7
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
Neumi5694 Desktop.getDesktop().open(...); Allgemeine Java-Themen 0
M Umstieg Oracle JDK zu Open JDK Allgemeine Java-Themen 20
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
J Druckvorgang mit Java beenden (Open Office) Allgemeine Java-Themen 3
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
M Open Source Projekte => wo herunterladen? Allgemeine Java-Themen 2
M Open Source Projekte / source - binaries Allgemeine Java-Themen 13
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
G Desktop open() - Problem mit Media Player Allgemeine Java-Themen 4
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
K associate collection with two open sessions Allgemeine Java-Themen 12
A Open Office Formeln Allgemeine Java-Themen 7
D Ersetzen in Open Office Dokument Allgemeine Java-Themen 2
KrokoDiehl Desktop.open() und warten? Allgemeine Java-Themen 3
1 Java <-> Open Office Allgemeine Java-Themen 5
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
T linux problem mit Desktop.getDesktop().open(..) Allgemeine Java-Themen 5
M bug? datei oeffnen nicht Desktop.open Allgemeine Java-Themen 3
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 7
Daniel_L Fehler in Desktop.getDesktop().open()? Allgemeine Java-Themen 3
Daniel_L Desktop-Api: Problem mit open() und Umlauten Allgemeine Java-Themen 5
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 4
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
MasterEvil Open Office Converter Allgemeine Java-Themen 11
Y Open Source Plattformen Allgemeine Java-Themen 4
C [javax.mail] Folder not open Allgemeine Java-Themen 2
L Open Source Projekt Allgemeine Java-Themen 7
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
J integration in Open Office Allgemeine Java-Themen 2
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
X Files.walkFileTree zählt nicht richtig Allgemeine Java-Themen 2
L Mehrere .Jar Files aufrufen Allgemeine Java-Themen 9
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
C Input/Output Zip Files über Socket senden und empfangen Allgemeine Java-Themen 6
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
X Wav-Files abspielen Allgemeine Java-Themen 2
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
W audio files metadaten Allgemeine Java-Themen 2
M Threads Excel files bearbeiten Allgemeine Java-Themen 4
J Wie kann man .txt Files übers Internet verschicken? Allgemeine Java-Themen 53
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
K Zip-Archive mit temporären Files erstellen Allgemeine Java-Themen 16
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
M wav-files kanäle zusammenfügen + pitchen Allgemeine Java-Themen 6
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
B Files.isDirectory Allgemeine Java-Themen 14
P Ordnerstruktur nach .js-Files durchsuchen Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
P Files - nach der reihe String reinschreiben Allgemeine Java-Themen 2
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
A Navigation zu Files innerhalb jar Allgemeine Java-Themen 3
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
B Eclipse Attache source to own jar-files Allgemeine Java-Themen 2
B Permissions of Folders/Files Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
V Mac: Paketinhalt eins Files öffnen, wie? Allgemeine Java-Themen 3
M Übergabe mehrer Files an selbstprogrammieren Parser Allgemeine Java-Themen 4
reibi Separator in java.util.Properties-Files Allgemeine Java-Themen 3
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
X Log files monitoren Allgemeine Java-Themen 7
reibi Files über Classpath laden Allgemeine Java-Themen 22
S Viele zip-files zu einem kombinieren..? Allgemeine Java-Themen 3
B Öffnen und schließen von Pdf-Files Allgemeine Java-Themen 8
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
R in .jar werden files nicht gefunden!!! Allgemeine Java-Themen 5
N Fehler mit Jar-Files Allgemeine Java-Themen 9
J BufferedImage aus PNG Files haben keinen Type Allgemeine Java-Themen 4
U Properties in Jar Files Allgemeine Java-Themen 3
Developer_X Extract Zip Files with Java Allgemeine Java-Themen 21
N 2 files auf gleichheit vergleichen Allgemeine Java-Themen 5
A Get all Files in Workspace Allgemeine Java-Themen 9
Quaxli Files massenhaft löschen Allgemeine Java-Themen 3
N Versionierung von jar-Files Allgemeine Java-Themen 5
Daniel_L Best Practice zum Löschen von Log-Files? Allgemeine Java-Themen 8
V aus mehreren jar files, ein großes basteln Allgemeine Java-Themen 22
J Eclipse: Einbindung von jar-Files funktioniert nicht Allgemeine Java-Themen 4
O .jar Files - Tools zum generieren Allgemeine Java-Themen 25
A Problem: Mehrere PDF-Files nacheinander Öffnen Allgemeine Java-Themen 12
A jpeg Files mit eigenem Programm öffnen Allgemeine Java-Themen 4
M Embedded Files aus PDF extrahieren Allgemeine Java-Themen 3
M Debuggen von Code in jar-Files? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben