ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
13595
13595
EMPFEHLEN
-
Hallo zusammen hoffentlich kann mir jemand helfen!
Ich hab ein großes Problem:
Ich hab ein Programm geschrieben, dass sehr viele ImageIcons enthält. Jetzt gibt es immer bein Programmstart einen Out if Memory Error. Wie kann man das Vermeiden ohne dass man ImageIcons weglassen muss?
Danke an alle die helfen könne schon mal im voraus!
-
28.10.04 23:36 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Du könntest die Maximale Größe des Heaps für die VM erhöhen:
Die übersicht über die dafür notwendigen Befehle erhälst du über:
Ausgabe:Code :1
java -X
Der Parameter den wir brauchen ist -Xmx<size> wobei <size> eben die größe des maximalen Heaps angibt.C:\>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
The -X options are non-standard and subject to change without notice.
Versuchs beispielsweise mal mit:Mögliche Parameter wären:
-Xmx64M -> 64 MB Maximale Heaps Größe (Standard: 64MB)
-Xmx81920k -> 81920kbytes
-Xmx83886080 -> 83886080bytes
Code :1
java -Xmx256M MainKlasse
Jedoch ist das nicht die Lösung für dein Problem sondern zögert diese nur hinaus.
Schau lieber mal noch ob du noch irgendwo Referenzen auf nicht mehr benötigte ImageIcon Instanzen. Wenn das der Fall ist kann der Garbage Collector die Objekte nicht aus dem Speicher räumen. Es ist immer besser seine Anwendung erstmal dahingehend zu Optimieren als "die Umgebung" zu ändern.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
29.10.04 09:54 #3
Hallo,
ein OutOfMemory Error tritt oft bei Endlosschleifen auf. Initialisierst Du die ImageIcons in einer Schleife? Du musst Deinen Code genauer untersuchen, am besten in Debug-Modus.
-
Kann es sein, dass du häufig Objekte creierst und sofort wieder verwirfst? Wenn du das schnell machst kommt die Garbage-Collection nicht nach. Da hilft dann ein gezielter aufruf der gc (oder ein anderes Design mit einem Objekt-Pool).
-
29.10.04 12:29 #5
Falls sich Deine Objekt-Erstellungen im Rahmen halten und auch die Schleife fehlerfrei ist, könnte es vielleicht sein, daß Deine Bilder mit Anzahl und Größe zu viele Bytes "fressen". Vielleicht solltest Du die Bildgrößen reduzieren. Positiver Nebeneffekt währe dann auch sinkende Ladezeit.
CU schnuffie
-
Danke ihr habt mir alle sehr geholfen!
Ich hab jetzt erst mal die Größe der Bilder reduziert und jetzt gehts wieder. Fragt sich bloß wie lang?
-
Besorg dir mal eine Profiler-Software. Die kann aufdecken, wo der Speicher gebraucht wird und du kannst dann damit geziehlt dagegen vorgehen.
-
Hallo,
ich habe ein ganz ähnliches Problem:
Ich habe auf der rechten Seite einen Baum, wenn auf ein Blatt geklickt wird erscheint auf der linken Seite der Anwendung ein Panel mit einem Bild. Das ganze liegt natürlich in einem SplitPane.
Ich habe alle Vorschläge hier ausprobiert aber es führte nicht zum Erfolg. Wenn ich einige Male im Baum klicke bekomme ich die Java Out of Memory Fehlermeldung.
Beim Klick wird nur dieser Code durchlaufen:
ResultSet res = Frame.db.query(
"SELECT PersonID FROM Person WHERE ( Name ='" + name +
"' AND"
+ " Vorname='" + vorname + "')");
res.next();
personId = res.getLong("PersonID");
Register reg = new Register(personId);
splitPane.setRightComponent(reg);
splitPane.setDividerLocation(dividerLocation);
res.getStatement().close();
Woran kann das noch liegen?
Wo gibt es so eine Profiler Software am besten noch umsonst?
Gruß SIMON
Ähnliche Themen
-
[Perl] Out of Memory Error
Von Ole im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 4Letzter Beitrag: 27.08.10, 17:44 -
Memory Error
Von Zack im Forum PHPAntworten: 6Letzter Beitrag: 19.12.08, 23:27 -
Memory Error
Von Duellking im Forum PHPAntworten: 3Letzter Beitrag: 31.07.07, 09:41 -
Fatal error: Allowed memory...
Von em3L im Forum PHPAntworten: 26Letzter Beitrag: 06.05.07, 15:22 -
Memory Error
Von rayinstructor im Forum 3D Studio MaxAntworten: 4Letzter Beitrag: 18.01.05, 17:05





Zitieren

Login





