Chriz21 Geschrieben 14. Juli 2005 Teilen Geschrieben 14. Juli 2005 Hallo, ich hab ein kleines Problem an dem ich nicht weiterkomme. Also ich mache nichts anderes als ganz viele Dateien zur Erzeugen und dort einen kleinen String reinzuschreiben, der auch immer gleich lang ist. Hier der Programmausschnitt: for(int i=0;i<anzahl;i++){ String mrn=new_mrn.getMrn(applikation.name.getText()); FileWriter fos3 = new FileWriter(applikation.panel3_auftrag.getText()+"/Auftrag_Simu3_"+mrn+".aut"); fos3.write(mrn); fos3.close(); } Das ganze funktioniert soweit, nur ich benutzte, je mehr Dateien ich erzeuge, immer mehr Arbeitsspeicher was ich im Task-Manager beobachten kann. Kommentiere ich aber den Befehl fos3.write(); raus, bleibt die Speichernutzung konstant. Mir kommt es so vor als würde ich in den RAM schreiben mit dem Befehl write(), aber das mache ich ja nicht, in den Dateien ist ja auch der String. Das Problem ist ich darf den Arbeitsspeicher nicht so in anspruch nehmen. Ich hab das mal getestet bei 10000 durchläufen ohne fos3.write(); da brauchte ich ca. 1500 KB RAM und das bleibt auch die ganze Zeit konstant, mit dem Befehl fos3.write(); allerdings brauchte ich ca. 13000 KB RAM, und je mehr druchläufe ich mach desto grösser wird der. Die Datei erzeuge ich ja mit dem FileWriter auch ohne das write, damit schreibe ich ja nur den String rein. Mache ich da was falsch oder muss ich das irgendwie anders machen? Danke und Gruß, Chriz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 14. Juli 2005 Teilen Geschrieben 14. Juli 2005 Mache ich da was falsch oder muss ich das irgendwie anders machen?Deine Herangehensweise ist absolut in Ordnung. Das einzige, was mir noch auffällt ist dies hier: fos3.write(mrn); [b]fos3.flush();[/b] // Zur Sicherheit, falls der Stream nicht auto flushed fos3.close(); Was den Speicherverbrauch angeht: Probier mal zwischendurch mit System.gc() den Garbage Collector zu ermutigen seine Arbeit zu tun - vielleicht liegen die Daten einfach nur noch auf dem Heap und genießen die Aussicht Wobei 1,5 MB an RAM für eine normale Java Anwendung schon sehr niedrig ist, ich würde mir da also keine Gedanken machen, das ist alles noch im grünen Bereich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 14. Juli 2005 Teilen Geschrieben 14. Juli 2005 Hi, wenn der Speicher stetig bis zur OutOfMemoryException steigt, erzeugst du bei den Methodenaufrufen getMrn(...) und getText() weitere Objecte und hälst irgendwo eine Referenz darauf. import java.io.*; public class Test { public static void main(String[] args) throws Exception { for (int i = 0; i < 50000; i++) { String mrn = "blahhhhhshh"; FileWriter fos3 = new FileWriter("dump/" + i + "ssaaaaa.txt"); fos3.write(mrn); fos3.close(); } } } pendelt sich bei mir bei Konstanten 6,5 MB ein. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.