Announcement

Collapse
No announcement yet.

Abnormaler Speicherverbauch Tomcat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abnormaler Speicherverbauch Tomcat

    Hallo!

    Ich habe ein Problem mit einem Tomcat-Servlet. Das Servlet an sich verbaucht mit der Zeit immer mehr Speicher. Das eigentliche Problem tritt jedoch auf, wenn die Anwendung beendet wird. Der Speicherverbauch des Tomcats sinkt nicht mehr. Im Tomcat-Manager wird "Free Memory" nicht wesentlich erhöht, wenn die Anwendung beendet wurde. Starte und beende ich die Anwendung mehrere Male, so verliert der Tomcat immer mehr Speicher, bis er schließlich eine OutOfMemoryException wirft.

    Ich habe folgende Überlegungen angestellt, woher es kommen könnte:

    1. Es werden String + String + String - Kommandos großflächig eingesetzt um SQl-Queries abzufragen. Können die dadurch generierten internal Strings eventuell den Speicher zumüllen. Werden diese Strings bei der JVM 5.0 tatsächlich "nie" aufgeräumt, wie es in manchen Threads zu lesen ist

    2. Verbindungen zur Datenbank. Wird die Applikation nicht ordnungsgemäß beendet (einfach Browser-Fenster schließen), wird keine Aufräum-Methode gestartet. Damit bleibt auch die Verbindung zur DB bestehen. Diese sollte doch aber nach einer gewissen Zeit ein Timout bekommen, oder?

    3. Context. Wird die Applikation nicht ordnungsgemäß beendet, wird der gesamte Context ja nicht ordentlich aufgeräumt (siehe auch Verbindungen zur Datenbank, der im Context gehalten wird). Wird dieser nie aufgeräumt? Wenn die Session ein Timeout hat, müsste sie doch vollständig alle Teile der Applikation aufräumen, oder?

    Mit Profiling bin ich nicht sonderlich weit gekommen. Den meisten Platz nehmen char[] und byte[] weg (Daher bin ich auf die Strings gekommen) , aber es existieren zu viele Klassen um alles in vernünftiger Zeit zu debuggen. Die Applikation ist nicht von mir entwickelt und hat tausende von Klassen.

    Hat irgend jemand eine Idee, woran es liegen könnte, oder mit welcher Methodik ich dem Problem auf den Grund gehen könnte?


    Danke schonmal im Vorraus

  • #2
    ja hab ich auch

    Hallo Merziger,

    ich hab das auch. Bei mir hat dat mit der lib javassist zu tun. Ansonsten kann es auch immer ein Programmierfehler sein. Wenn tote Referenzen erzeugt werden, sodass der Garbage Collector nicht merkt, dass ein Objekt eigentlich zerstört werden kann.
    http://www.winfonet.eu

    Comment

    Working...
    X