java.lang.OutOfMemoryError

Status
Nicht offen für weitere Antworten.

Fian03

Mitglied
Hallo

weiß jemand wie ich mein Memory erweitern kann. Dieser Fehler hat ja nix mit den Systemleistungen zu tun, oder?

Danke im Vorraus
 

Stefan1200

Top Contributor
Das Problem hatte ich leider auch, als ich versucht hatte eine sehr große Datei in den StringBuffer zu speichern.

Nach einer Lösung habe ich allerdings noch nicht gesucht.
Vielleicht weiss jemand anderes was?
 

mariopetr

Bekanntes Mitglied
beim start der vm kann man speicher zuweisen
fuehre mal java -X aus
Xmx gibt den maximal belegbaren speicher an
Xms die segement size
 
G

Guest

Gast
Kannst du mir die genaue Syntax zeigen? Ich finde in diversen Büchern keinerlei Info's! :(

DANKE

Gruß Fian03
 
G

Guest

Gast
Ich bin ein Windowsbenutzer.

In den bin-Ordner finde ich noch, weiß aber nicht wo ich dann hin muss, es gibt unter Win kein 'java -x'.
Oder ich bin einfach zu dämlich :?
 

mariopetr

Bekanntes Mitglied
also wenn du dann im [..]/java/jre/bin ordner bist,
gib mal java -help ein. java -X ist die hilfe fuer die extended parameter (-help und -X sind parameter des programmaufrufs "java" und werden mit " " vom programmnamen getrennt)

Ich bin ein Windowsbenutzer.

_das_ sollte egal sein (solange du ein sun sdk/jre hast)
 

aquanox

Mitglied
Hi,

also Allgemein bedeutet OutOfMemoryError, dass Java keinen weiteren Speicherplatz mehr auf dem System zur Verfügung.

Beispiel:
Das Java Programm braucht mehr Speicher. Gute Betriebssysteme kontrollieren das und geben nicht den gesamten Speicher frei für Programme. Wenn der GarbageCollector keinen Speicher mehr frei bekommt, dann gibts den obigen Fehler.

Lösung:

1. Einfachste Lösung ist mehr Arbeitsspeicher einbauen, da das oft damit zusammenhängt.

2. Speicher, den Java Maximal bekommt:
java -Xmx n Programm.java
(Anstelle n steht dann der Wert plus die Erweiterung für MB (m) oder KB (k))

z.B:
java -Xmx 128m Programm.java (Java hat maximal 128MB Arbeitsspeicher)
java -Xmx 1024k Programm.java (Java hat maximal 1024kB (1,024MB) Arbeitsspeicher)

Das gleiche geht auch um schon am Start den Speicher festzulegen
mit: -Xms als Parameter mit den gleichen Werten.

3. Auch jemand, der die einfachste Möglichkeit vorzieht hört spätestens auf, wenn alle Slots voll sind.
Besser man durchsucht sein Java Programm und findet die Stellen, die Speicher unnötig vollschreiben.
 

mariopetr

Bekanntes Mitglied
mehr speicher einbauen, bringt erstmal garnichts, man muss schon die parameter Xmx und notfals Xms setzten, allerdings haengt dies auch von dem verwendeten jre (hp jre kann man z.b. als "selbstoptimierend starten").
bei ms jre bin ich mir auch nicht sicher, soviel propritaeren mist wie die machen, windows habe ich auch nicht als das ich es mal testen koennte.

<klugscheiss>
1024kb=1,000Mb
</klugscheiss>
 

aquanox

Mitglied
Ich habe das ganze auf eine Linux Server gehabt und der hatte bei dem Fehler den kompletten Speicher plus Swap partition voll.

Unter Linux wird für Java der gesamte Speicher freigegeben, wenn er denn gebraucht würde.
Windows sperrt das meistens ab, da sonst das System abstürzen würde.

Bei dem obigen Fall gaben die Parameter keine Lösung denn:

Der Parameter Xms stellt den Speicher zum Start schon vorreserviert ein - das wäre nicht nötig, weil Java sich Speicher vom System holt, sollte nochwas gebraucht werden. Hat nur Sinn, wenn man andere Anwendungen laufen hat, die sich sonst zu viel nehmen.

Der Parameter Xmx stellt den maximalen Speicher ein, das bedeutet, dass Java nicht mehr als diesen Wert bekommt auch wenn das System noch genug frei hätte.



Zu deinen Byterechnungen:

MB (Mega = Millionen) und kB (Killo = Tausend)

1024 kb zu MB also duch 1000 sind mathematisch 1,024
(Das Thema geht hier auch nicht um diese Umrechnung, war nur als Beispiel zum Verständnis)
 

DTR

Bekanntes Mitglied
mariopetr hat schon recht:
1 MB = 2^10 KB = 1024 KB

Soviel nur dazu, und jetzt zurück zum Thema.
 

mariopetr

Bekanntes Mitglied
erst
> Unter Linux wird für Java der gesamte Speicher freigegeben, wenn er denn gebraucht würde.
> Windows sperrt das meistens ab, da sonst das System abstürzen würde.
dann
> Der Parameter Xmx stellt den maximalen Speicher ein, das bedeutet, dass Java nicht mehr als diesen Wert bekommt auch wenn das System noch genug frei hätte.

sich selbst zu wiedersprechen laesst auf probleme schliessen. zudem wuerde mich mal interessieren, mit welchem jre du das auf linux beobachtet hast. ich arbeite (fast)jeden tag mit java auf hp-ux,linux,freebsd und solaris, bis jetzt hat sich noch jede vm an Xmx gehalten.

was das Mb angeht, bei mir ist ein Mb=1024kb=2^20b. nur weil die hdd hersteller sich nicht daran halten (die speicherhersteller allerdings schon), mache ich diesen mist nicht mit. im uebrigen musst du dich schon im bezugsrahmen bewegen (bei der angabe der speicherparameter ist 1024kb aequivalent zu 1Mb, woraus man schliessen kann, das (in dem betreffenden raum) 1,024Mb>1024kb.
 

aquanox

Mitglied
Das erninnert mich an die Zeiten wo ich Rechnen in Binär gemacht habe.

Wie oben geschrieben, das Beispiel war hier nicht auf Richtigkeit sondern auf Verständlichkeit.



Ich arbeit nur mit dem jre von sun und dort trat das Problem auf, dass Java sich so viel Speicher genommen hatte, dass für Linux zu wenig übrig war und somit Linux angefangen hat Prozesse zu killen. Das Problem konnte ich nur lösen indem ich die Speichergröße maximiert habe. Oben meinte ich, dass diese Einstellung abhängig vom System ist, das hat nichts mit wiedersprechen zu tun. Unter Windows hatte ich bei dem gleichen Test nämlich keine Probleme mit zu wenig Speicher im System.
 

mariopetr

Bekanntes Mitglied
hmm, seltsam, habe es gerade nochmal ausprobiert

jedesmal -Xmx32M Xms8M

public static void main(String[] args)
{
List list=new ArrayList();
int i=0;
while(true)
{
list.add(new byte[1024*1024]);
System.out.println(++i);
}
}

suse linux 8.2 mit sun jdk 1.4.2_01
hp-ux11i mit hp jdk 1.4.2_03
debian "woody" mit blackdown 1.4.1_01

immer die erwartete exception nach ca 30 durchgaengen. nach deinen beobachtungen haette es eintweder nach ca 1000 durchgaengen (1Gb RAM) oder 3000 durchgaengen (1Gb RAM + 2Gb Swap) schief gehen muessen.
 

aquanox

Mitglied
Stimmt, genau das habe ich auch gemeint.

Ohne die Parameter hat Java den Speicher vollgemacht, wobei ich Threads benutzt habe.

Mit Parametern bricht Java mit Exceptions ab - so wie oben beschrieben.
 

mariopetr

Bekanntes Mitglied
naja, aber man fuehrt doch java nie ohne diese parameter aus, wenn man sie nicht setzt steht Xmx auf 64M und Xms auf 8M, ich habe es auch ohne parameter versucht, er hat peunktlich nach 62 durchgaengen abgebrochen. allerdings benutze ich nur hotspot, respektive server auf hp, solaris und bsd kan ich zuhause leider nicht testen.
 
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
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
M java.lang.OutOfMemoryError Allgemeine Java-Themen 7
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