jva.lang.OutOfMemoryError

Status
Nicht offen für weitere Antworten.

Tobias

Top Contributor
High,
ich hab ein Problem mit Threads, kann aber der Masse wegen wohl eher keine Code posten -> liest ja doch keiner ;). Und zwar starte ich zwei Threads, von denen einer auf der Standardeingabe wartet, bis etwas eingegeben wurde und diese Eingabe dann an den anderen weitergibt, der sie verarbeitet. Leider kommt noch vor dem ersten Prompt der oben genannte Fehler, den ich mir bei meinen 1024 MB RAM aber nicht wirklich erklären kann (zumal zu diesem Zeitpunkt nur der kleine harmlose Warte-auf-Eingabe-Thread laufen dürfte...).
Hat jemand eine Idee, woran das liegen könnte?

mpG
Tobias
 
B

Beni

Gast
Ein rekursiver Aufruf ohne Endbedingung?

Ist ohne Code sehr schwer zu sagen...

mfg Beni

P.S. vielleicht wird nicht alles gelesen, aber manchmal kopiert und ausprobiert. Das hilft vielmehr als die (meist) ominösen Fehlerangaben des Autors :D :wink: 8) :lol: :) :bae: (das war ironisch gemeint)
 

Grizzly

Top Contributor
Ich würde einfach mal die Aktionen des Programms mitloggen lassen. Dafür eignet sich beispielsweise die Jakarta Commons Logging Bibliothek. Zusätzlich kannst Du ja mal den Task-Manager von Win2000/XP mitlaufen lassen und Dir die Speicherentwicklung Deines Programmes anzeigen lassen.
 

Tobias

Top Contributor
Die Fehlermeldung bleibt mir rätselhaft... Der Taskmanager zeigt eine maximale Speicherauslastung von ca 350 MB an, während das Programm läuft. Allerdings scheine ich die fehlerhafte Anweisung ausfindig gemacht zu haben - parseFile(). Diese Methode versucht ein File einzulesen und es zeilenweise dem Parser zu übergeben. Da der aber erst rudimentär vorhanden ist, übergeb ich derzeit eine leere Datei, was in wohl aus der Bahn wirft...
Zur Kommunikation zwischen den beiden Threads benutze ich ein String-Objekt, das - wenn es leer ist, den parsenden Thread zum Warten bringt, bzw wenn es ungleich null ist, den Eingabe-Warte-Thread. Die synchronized-Anweisung kann aber mit null-Objekten nicht umgehen (was ja auch logisch ist, wenn ich es mir recht überlege). Aber wie soll ich das stattdessen handhaben?
Ich speicher in diesem String-Objekt die Zeile, die eingelesen wurde (entweder aus einer Datei oder von der Kommandozeile). Nach dem Parsen setze ich das Objekt wieder auf null -> um zu signalisieren, das es weitergehen kann. Und da liegt wohl der Haken... Hat jemand einen Gegenvorschlag?

mpG
Tobias
 
B

Beni

Gast
wait und notify

für beide benötigst du ein synchronized-Block. Bei jedem Object kann man "wait" aufrufen, dann wartet der aufrufende Thread solange, bis ein anderer Thread beim gleichen Object die Methode "notify" aufgerufen hat. Man kann dabei sogar wartende Threads stapeln...

Aber in diesem Fall kannst du nur ein Object verwenden!
 

Tobias

Top Contributor
Bei mir schaut das im Moment so aus:

Code:
public class CommandProcessor implements Runnable {

    private class InputListener implements Runnable {

        boolean runflag = true;

        // nur die run-Methode
        public void run() {
            while(runflag) {
                synchronized(order) {
                    if(order != null) { // unbearbeiteter Befehl liegt vor
                        wait();
                    }
                    else {
                        // String von der Standardeingabe lesen und in order speichern
                       notify();
                    }
                }
            }
        }
    }

    String order = null;
    Command command;
    boolean runflag = true;

    // auch hier nur die run-Methode
    public void run() {
        try {
            parseFile(); // parst das Autostart-File, das z.B. nicht-Kernel-Programme nachlädt
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }

        Thread input = new Thread(new InputListener()).start(); // jetzt starte ich das Horchen auf der Standardeingabe
        
        while(runflag) {
            synchronized(order) {
                if(order == null) { // keine neuen Befehle
                    wait();
                }
                else {
                    command = parse(order); // order zu einem ausführbaren Befehl transformieren
                    execute(command);
                    order = null;
                    notify();
                }
           }
       }
   }
}

Soweit schon fette Fehler?

mpG
Tobias

P.S.: parsefile() ist im Moment auskommentiert, weil deren Ausgaben ja nichts Sinnvolles für den Parser ergeben. Und das der String order nicht null sein darf, wenn ein synchronized-Block betreten wird, weiß ich mittlerweile auch - hier wäre mein Frage, was ich dagegen tue...
 

Mick

Bekanntes Mitglied
Tobias hat gesagt.:
[...] den ich mir bei meinen 1024 MB RAM aber nicht wirklich erklären kann (zumal zu diesem Zeitpunkt nur der kleine harmlose Warte-auf-Eingabe-Thread laufen dürfte...).

Die Java Runtime nutzt nicht automatisch den gesamten Hauptspeicher aus. Man kann einstellen, wieviel genutzt werden soll.

Beispiel:

java -Xms{S} -Xmx{M}
{S} sind die Bytes, mit denen Java gestartet wird
{M} maximale Größe, Du kannst "M" dahinter setzen, um in MegaByte anzugeben: -Xms16M

Starte Java mit 20 Mb und erlaube höchstens 128 MB Speicher:
java -Xms20M -Xmx128M

Nur mal so zur Info.

Grüße,
Mick
 

lhein

Top Contributor
1024 MB Ram hast Du wohl, aber Java nutzt standardmäßig nur einen kleinen Teil (glaub 64 MB, bin mir aber nicht sicher). Die Fehlermeldung "Out of Memory" bezieht sich also auf eben diesen kleinen Teil, den sich die JRE reserviert.

Edit: Ha, war zu langsam :)
 

Tobias

Top Contributor
Also, da ich schon Speicherverbräuche von weit über 800 MB provoziert habe und das problemlos geklappt hat, kann darin nicht die Erklärung liegen. Spielt abr auch keine Rolle, da ich mittlerweile ein paar substanzielle Fehler in der Klasse aufgedeckt habe und sie daher neu designt habe. Bisher läuft die Implementierung gut, auch wenn ich den letzten Stand aus Zeitmangel noch nicht ganz erreicht habe.

mpG
Tobias
 
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
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
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
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
A Zahl zu lang für Long Allgemeine Java-Themen 3
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
M Bedeutung von [Ljava.lang.String;@6eb38a Allgemeine Java-Themen 7
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
Java-Insel [[Ljava.lang.String;@3487a5cc - Problem Allgemeine Java-Themen 14
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
DStrohma Kommandozeilen-Programm unendlich lang ausführen Allgemeine Java-Themen 13
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
T CRC (2Byte lang) Berechnng aus Bytearray Allgemeine Java-Themen 2
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
A Probleme mit iText - Text in Zellen ist zu lang Allgemeine Java-Themen 7
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
B Darstellung von Objekten dauern unterschiedlich lang ! Allgemeine Java-Themen 5
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

Ähnliche Java Themen

Neue Themen


Oben