Discussions

Performance and scalability: JVM settings and the old generation gc'ing

  1. JVM settings and the old generation gc'ing (3 messages)

    I have recently been the lucky recipient of a non tuned weblogic server. I have since tuned it up and I have the following java options in the jvm -verbosegc -XX:NewSize=192m -XX:MaxNewSize=192m -XX:SurvivorRatio=8 -Xms768m -Xmx768m -XX:MaxPermSize=128m . I noticed, through the Unix console output, that the GC is not ever triggering a "Full GC". I have a few questions about that.
    1) Why isn't the Full GC every being triggered?
    2) Do I need a Full GC triggered? Should it be based on time?
    3) Do some of my other settings need to change so that a Full GC is triggered?
    4) Is the incremental GC going into both young and old generation memory which leads my whole concern not valid?


    Thanks in advance -Travis

    Threaded Messages (3)

  2. 1-your old generation is never filling up! your young generation is soo large that it contains all short lived objects, and after a small gc, survivors also have a 1/8 of 192 meg. That is a lot. So another small gc may cause to clear all non-permanent objects. Basically, I think your old-gen heap contains only the servlet/ejb (etc) code, none of the transaction (http/ejb/etc...)

    2-you should be happy that you don't need a full gc.
    if the OS swapped some memory to pagefile on disk, it will have to swap it in.
    I have seen a full gc of almost 2 minute! (117 seconds). (I keep tellilng sun to implements a non-paged memory option for the JVM but they stupidly say I just need more ram. Ok then, why did they added that option (ISM: intimate shared memory) to the solaris 1.3.1 jvm?!!!)

    3-you could want the heap to defrag on full GC and reduce the young generation and survivor size. But again why would you do so...
    On jdk 1.4.2 I use (for my eclipse IDE)
    -XX:+UseConcMarkSweepGC
    -XX:+UseParNewGC
    -XX:+CMSParallelRemarkEnabled
    -XX:+UseCMSCompactAtFullCollection

    4- for complete details, you must read pretty much ALL the following:
    http://java.sun.com/docs/hotspot/ (portal)
    http://java.sun.com/docs/hotspot/gc1.4.2/index.html
    http://java.sun.com/j2se/1.4.2/1.4.2_whitepaper.html
  3. jvmstats/visualgc[ Go to top ]

    And you certainly want to look up 1.4.1 tools like jvmstats/visualgc

    http://developers.sun.com/dev/coolstuff/jvmstat/
  4. Thanks for these great answers!