java.lang.OutOfMemoryError

Status
Nicht offen für weitere Antworten.
F

Flyer

Gast
habe folgenden Fehler beim Ausführen meines Programms!
java.lang.OutOfMemoryError

wie kann es korrigieren das es läuft?
wie kann ich den speicher erhöhen? oder wie kann ich es schaffen das weniger speicher gebraucht wird, dasss der Fehler nicht auftritt?

Gruss Flyer
 

foobar

Top Contributor
Setz alle Variablen die du nicht mehr brauchst auf null, dann wird beim nächsten Lauf des Garbage Collectors aufgeräumt.
 

Sky

Top Contributor
Speichererhöhung:
Option "-Xmx256m" (max-wert setzen)
Option "-Xms256m" (start-wert setzen)


Speicherverbrauch reduzieren:
Also, pauschal gibt es darauf keine Antwort. Du mußt dein Prog. mal profilen. Was auf jeden Fall speicher kostet:
- viele Strings mit dem '+'-Operator konkatinieren.
- Wrapper-Klassen anstatt primitive Datentypen nutzen (wenn nicht unbedingt erforderlich
- noch ganz viele andere Dinge. Pauschal-Antwort -wie gesagt- nicht möglich
 
R

Roar

Gast
hier hat mal einer gesagt dass er bei seinem programm eifnach nebenbei einen timer hat laufen lassen der alle 5 minuten oder so den garbage collector aufruft, danach hats bei ihm geklapt. vielleicht hiflt dir das ja auch.

oder du hast n fehler in deinem code :-/

edit: das hat nix mit awt&swing zu tun, ich verschieb das mal.
 
F

Flyer

Gast
Danke für eure Antworten!

Gibt es auch externe Programme die solche "speicherverschwendung" erkennt? bzw. die einem zeigt wo am meisten speicher verloren ging?

Gruss Flyer
 

Sky

Top Contributor
Ja. Im JDK mitgeliefert findest Du den sog. hprof. Den läßt Du mit der Option -Xrunhprof... mitlaufen. '...' steht für weitere Einstellungsmöglichkeiten, einfach mal im Netz danach suchen.
Ansonsten kann ich Dir auch noch OptimizeIt empfehlen. Das Kost' aber extra...
 
B

bygones

Gast
Roar hat gesagt.:
hier hat mal einer gesagt dass er bei seinem programm eifnach nebenbei einen timer hat laufen lassen der alle 5 minuten oder so den garbage collector aufruft, danach hats bei ihm geklapt. vielleicht hiflt dir das ja auch
Naja - davon bin ich nicht so überzeugt. Auch der direkte Aufruf des Gc heißt nicht automatisch dass das Programm performanter wird... Man sollte es nicht als Allzweckwunderwaffe sehen.

Wenn du mit eclipse arbeitest gibt es da genügend Plugins die die Profilerarbeiten für dich leisten (z.b. EclipseProfiler)
 
G

Guest

Gast
System.gc() innerhalb des GUI Threads bringt höchstens ein
auffällig langsames Rektionsverhalten der Anwendung.

Java ist halt verdammt verschwenderisch mit Speicher. Damit muss
man leben. Man kann höchstens dafür sorgen, das keine unnötigen
Objekte erzeugt werden, indem man sie wiederverwendet oder erst
gar nicht erzeugt. (Object-Pool etc.).

Zuerst aber die Stellen lokalisieren, die den meisten Speicher verbrauchen.
Es bringt wenig sofort mit Optimierung jeglicher Art anzufangen, um
dann festzustellen, dass man den 5% Fall optimiert hat.
Optimierungen sollen messbar und nachvollziehbar sein.

Hough, ich habe gesprochen 8)
 

phillli

Mitglied
Naja, Thema schon veraltet, aber ich habe gleiches Problem.

Die Stellen, wo mir Speicher vorloren geht, ist leicht gefunden. Alle paar Zeilen einfügen:
System.out.println("xx_freememory: "+Runtime.getRuntime().freeMemory());

Heisst aber noch lange nicht, dass das Problem gelöst ist. Was, wenn ich da Speicher verbrauche, wo es sich nicht umgehen lässt? Naja, mein Problem...
 

Sky

Top Contributor
phillli hat gesagt.:
Was, wenn ich da Speicher verbrauche, wo es sich nicht umgehen lässt? Naja, mein Problem...

Die Frage ist: Läßt es sich nicht umgehen oder weißt Du nicht, wie es sich umgehen läßt!? Ich habe am Anfang auch nicht so recht gewußt, wie man Performance rausholen kann und gedacht, dass es so sein muss (wegen der Fachlogik).
Die Erfahrung hat mich gelehrt, dass es oftmals doch eine andere Lösung gibt. Ein ganz banales Beispiel: Ich hatte damals eine Schleife, die ca. 25.000 mal durchlaufen wurde. In der Schleife wurden zum Teil Strings mit einander verbunden. Ich bin an der Stelle von String auf StringBuffer umgestiegen und habe die Performance um einen Faktor größer 1.000!
Es gibt noch mehr Beispiele. Insbesondere bei Schleifen und beim Anlegen von Objekten.
 

phillli

Mitglied
ja, mag sein. ich arbeite mit Bildern, die z.T. recht gross sind.
Das wirklich blöde ist, dass die wichtige Klasse nicht von mir ist, ich muss sie also modifizieren, und dafür erst mal verstehen.

Suche gerade auch schon Lösungen, wie ich meine Datenmenge reduzieren kann. Wenn ich mal mehr konkrete Fragen habe, melde ich mich wieder...
 

thE_29

Top Contributor
Sind den die Strings wenn ich die mit + anstatt mit stringbuffer append (obwohl das ja das gleich ist) wirklich Speicher/Zeitintensiver??
 

Sky

Top Contributor
thE_29 hat gesagt.:
Sind den die Strings wenn ich die mit + anstatt mit stringbuffer append (obwohl das ja das gleich ist) wirklich Speicher/Zeitintensiver??

ja, weil bei "Strings" und "+" immer wieder neue Objekte erzeugt werden müssen.

Der folgende Code
Code:
    String s = new String();
    StringBuffer sb = new StringBuffer();
    int iMax = 25000;

    long t1 = System.currentTimeMillis();
    for ( int i = 0; i < iMax; i++ ) {
      s += String.valueOf(i);
    }
    System.out.println("String: " + (System.currentTimeMillis()-t1) );


    long t2 = System.currentTimeMillis();
    for ( int i = 0; i < iMax; i++ ) {
      sb.append( String.valueOf(i));
    }
    System.out.println("StringBuffer: " + (System.currentTimeMillis()-t2) );
brachte bei mir folgendes Ergebnis:
Code:
String: 77219
StringBuffer: 16
 

thE_29

Top Contributor
Oha, das ist ja wirklich schneller!

Naja, ich hab überall + ;) Aber ich mache ja keine Echtzeitsimulationen damit :bae:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
M java.lang.OutOfMemoryError Allgemeine Java-Themen 7
F java.lang.OutOfMemoryError Allgemeine Java-Themen 17
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
T Eclipse Dll einbinden java.lang.UnsatisfiedLinkError nur in Eclipse nicht via javac Allgemeine Java-Themen 1
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
J Compiler-Fehler java.lang.StringIndexOutOfBoundsException Allgemeine Java-Themen 12
D java.lang.TypeNotPresentException Allgemeine Java-Themen 3
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
B Variable class in java.lang.Object Allgemeine Java-Themen 11
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
T java.lang.AssertionError: Allgemeine Java-Themen 4
T java.lang.ClassCastException: Allgemeine Java-Themen 4
P Java Probleme - java.lang.Thread.run(Unkown Source) Allgemeine Java-Themen 10
B java.lang.UnsupportedClassVersionError Allgemeine Java-Themen 12
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
B JNI - java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 21
E Interpreter-Fehler java.lang.ExceptionInInitializerError Allgemeine Java-Themen 12
C java.lang.ClassCastException Allgemeine Java-Themen 3
P Fehler beim Programmstart: java.lang.NoClassDefFound Allgemeine Java-Themen 12
T java.lang.ClassCastException Allgemeine Java-Themen 7
B Java - java.lang Allgemeine Java-Themen 12
sylo java.lang.NoSuchMethodError: Obwohl Methode vorhanden Allgemeine Java-Themen 8
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
M SerialPort RS232 : java.lang.NoSuchFieldError: eis Allgemeine Java-Themen 2
U java.lang.ClassNotFoundException: .jar Allgemeine Java-Themen 8
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
W java.lang.ClassCastException Allgemeine Java-Themen 10
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
N java.lang.InstantiationException Allgemeine Java-Themen 10
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
D replaceAll => no such java.lang.NoSuchMethodError Allgemeine Java-Themen 5
G java.lang.LinkageError: loader constraints violation. Allgemeine Java-Themen 3
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
Y java.lang.UnsupportedClassVersionError: Allgemeine Java-Themen 5
G java.lang.ClassCastException Allgemeine Java-Themen 3
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
E java.lang.outofmemory über windows-cmd ändern Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
I java.lang.UnsatisfiedLinkError: Allgemeine Java-Themen 8
J Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 26
J java.lang.StackOverflowError Debugging? Allgemeine Java-Themen 51
D java.lang.UnsatisfiedLinkError Allgemeine Java-Themen 5
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
S java.lang.UnsatisfiedLinkError mit JNI Allgemeine Java-Themen 6
reibi java.lang.Class - Resource - Solaris Allgemeine Java-Themen 17
S Exception in Thread "main" java.lang.NoClassDef. b Allgemeine Java-Themen 2
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
O "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBounds Allgemeine Java-Themen 6
B Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 12
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
G Problem mit java.lang.reflect.Field Allgemeine Java-Themen 15
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
H java.lang.ExceptionInInitializerError Allgemeine Java-Themen 7
D java.lang.IllegalMonitorStateException: current thread not Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 15
P Exception in thread "main" java.lang.NoClassDefFou Allgemeine Java-Themen 3
T Profifrage: java.lang.StackOverflowError bei BigInteger Allgemeine Java-Themen 27
W java.lang.ClassNotFoundException Allgemeine Java-Themen 10
B Exception in thread "main" java.lang.OutOfMemoryEr Allgemeine Java-Themen 5
B java.lang.NullPointerException Allgemeine Java-Themen 11
S Exception in thread "main" java.lang.StringIndexOu Allgemeine Java-Themen 9
J java.lang.ArrayIndexOutOfBoundsException Allgemeine Java-Themen 2
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
K java.lang.reflect - Getter und Setter ermitteln Allgemeine Java-Themen 8
G Java.lang.Compiler Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben