tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
542
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    anjepieft anjepieft ist offline Mitglied Bronze
    Registriert seit
    May 2008
    Ort
    Wermelskirchen
    Beiträge
    25
    Hallo zusammen,
    ich überwache den Speicherverbrauch der JVM auf einem Java AS. Zu einem willkürlichen Zeitraum fällt der Speicherverbrauch der JVM plötzlich ab, ohne das es eine besondere Erklärung dafür gibt. Vorher schwankt der Verbrauch im Zickzack zwischen 1400 und 1750 MB. Nach dem Abfall schwankt er nur noch zwischen 900 und 1200 MB.

    Kann mir jemand dieses Verhalten erklären?
     

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,

    also so ganz ohne Informationen (was läuft auf dem AS und wieviel), wird das schwer.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    anjepieft anjepieft ist offline Mitglied Bronze
    Registriert seit
    May 2008
    Ort
    Wermelskirchen
    Beiträge
    25
    Hi,
    es ist ein SAP AS Java auf dem eine NetWeaver CE 7.2 Installation läuft. Das Verhalten taucht sowohl auf wenn ein Prozess läuft und andere Prozesse deployed werden als auch wenn kein Prozess läuft und nichts deployed wird. Die Java Version ist 1.5
    Geändert von anjepieft (03.11.11 um 12:33 Uhr)
     

  4. #4
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Mh... Das ist schwierig zu sagen. Ich vermute mal, dass die JVM in regelmäßigen Abständen den Chache von nicht mehr benutzten Dingen leert. Dass das allerdings so einen gewaltigen Speicherunterschied ausmacht, könnte ich mir eigentlich nicht vorstellen.
    Fällt die Speichernutzung auch mal unter den Wert von 900MB-1200MB?
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  5. #5
    anjepieft anjepieft ist offline Mitglied Bronze
    Registriert seit
    May 2008
    Ort
    Wermelskirchen
    Beiträge
    25
    Der niedrigste Wert liegt bei 867 MB. Das komische ist das der Verbrauch jetzt seit einer Stunde bei den niedrigen Werten schwankt und vorher die ganze Zeit bei den höheren Werten lag obwohl der selbe Traffic erzeugt wird...
     

  6. #6
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Es hat sich aber im Hintergrund nicht unwissentlich ein Programm geschlossen. Aufgrund von Exception oder Beendigung, etc.?
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  7. #7
    anjepieft anjepieft ist offline Mitglied Bronze
    Registriert seit
    May 2008
    Ort
    Wermelskirchen
    Beiträge
    25
    Nein auch das ist nicht der Fall.
     

  8. #8
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Vielleicht auch der GC?
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  9. #9
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Spontan hört sich das so an, dass normalerweise nur kleine GC passieren (von den ersten 2 Speicherbereichen), aber irgendwann der große GC gemacht wird, wodurch alle Speicherbereiche angeschaut werden und somit auch die Objekte aufgeräumt weden, die es länger überlebt hatten.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  10. #10
    Avatar von j2se
    j2se j2se ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    94
    Blog-Einträge
    1
    Mit der jconsole lässt sich auch die Anzahl Threads, Classes u.ä.m. überwachen. Erzeuge einmal vor dem Memory-Abfall mit der jconsole ein VM-Summary und nach dem Abfall nochmals ein VM-Summary und Vergleiche die Werte. Gibt es Unterschiede?
     

  11. #11
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Man kann auch das jvisualvm Tool aus deinem Oracle JDK verwenden. Dort gibt es ein GC-Plugin, was sehr genau die Daten zum GarbageCollector wiedergibt.
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  12. #12
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    ich würde auch auf GC tippen... schalte doch mal das GC file logging ein.

    Sun JVM:
    -Xloggc:C:\Somefolder\jvm.log -verbose:gc -XX:+PrintGCDateStamps

    und schau mit JVisualVM oder HP JMeter (https://h20392.www2.hp.com/portal/sw...umber=HPJMETER) oder Eclipse (SAP) Memory Analyzer drauf (http://www.eclipse.org/mat/)

    Für SAP JVM switches schau hier:
    http://help.sap.com/saphelp_nwce10/h...07/content.htm
    https://forums.sdn.sap.com/message.j...sageID=4641316

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter