Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Fehler wie finden und beheben?

  1. #1
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569

    Fehler wie finden und beheben?

    Ich habe hier bei einer Datenbankanwendung ein merkwürdiges Verhalten:
    Sie läuft normalerweise problemlos. Nun muss ich jedoch einige Sachen an einer Kopie der Datenbank machen. Ändere ich die Datenbankverbindung auf die Kopie, so erhalte ich folgende Fehlermeldung:

    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    Mehr Informationen krieg ich nicht. Beim Durchlauf im Debugger zeigt sich, dass die Verbindung zur Datenbank korrekt aufgebaut wird. Später im Programmstart jedoch bricht das Programm mit o.g. Fehlermeldung ab. Zu dem Zeitpunkt ist es in den Systemklassen, so dass ich nicht recht weiß, wie ich herausfinden kann, wo der Fehler im Programm liegt.

    Hat jemand eine Idee dazu?
    Das Ziel ist das Ziel.

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Die Fehlermeldung scheint recht eindeutig: Zu wenig Speicherplatz vorhanden!

    Beheben: Irgendwo kannst du bei Java glaub einstellen, wie viel Speicher ein Programm verwenden darf. Frag mich jetzt aber nicht wo...

    Mfg Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Danke schon mal für die Antwort. Was ich nicht verstehe: Wenn die beiden Datenbanken identisch sind, wieso braucht er dann bei der einen erheblich mehr Speicher als bei der anderen?
    Das Ziel ist das Ziel.

  4. #4
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Kann es sein, dass du beide gleichzeitig lädst und somit die vorherige noch im Speicher hast?

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  5. #5
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Hm, die Anwendung hat nur eine Datenbankverbindung (wird durchgereicht), und die habe ich geändert. Es kann also eigentlich keine andere offen sein. Vorsichtshalber habe ich auch Eclipse beendet und gecheckt, dass keine Java-instanz offen ist. Bringt auch nix.

    *kopfkratz*

    Das Problem besteht auch dann, wenn sich die jvm 512 - 700 Mb schnappen darf. Das müsste für eine vielfache Programmausführung reichen.
    I gehe das Ganze noch mal Klasse für Klasse durch, nach Aufrufhierarchie.
    Geändert von mwanaheri (26-05-2006 um 18:17 Uhr)
    Das Ziel ist das Ziel.

  6. #6
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569

    Fehler gefunden

    Autsch! Fehler gefunden. Saublöder Fehler. Ich hatte beim Vorbefüllen einer Liste vergessen, ein Limit zu setzen. So wäre der Fehler auch auf der normalen Datenbank aufgetreten.

    Zum Fehlereinkreisen habe ich von der Hauptklasse aus alle jeweils aufgerufenen Konstruktoren mit System.out.println() umgeben und bin dann jeweils in die Klassen abgestiegen (Reihenfolge nach Aufruf), innerhalb derer es geknallt hat. Ist nicht schön, funktioniert aber. Kennst du da ein effizienteres Verfahren, wenn man keine ordentliche Fehlermeldung kriegt?
    Das Ziel ist das Ziel.

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Verwende log4j in deinem Projekt, dann kannst du die Meldungen auch im endgueltigen Programm lassen und setzt nur den Output-Level.
    http://logging.apache.org/log4j/docs...rg/log4j/docs/
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  8. #8
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    danke für den Tipp. Werde da mal stöbern gehen.
    Das Ziel ist das Ziel.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •