5 Replies Latest reply on Oct 30, 2006 6:30 PM by Elias Ross

    JBoss memory usage

    Patrick To Newbie

      Hi all,

      I have set the parameters of JVM as -Xms128M -Xmx512M -XX:MaxPermSize=128m. The heap memory should be maximum of 640M. However, after JBoss started and running for some days, the memory usage keeps on increasing everyday and over 700M.

      I want to know how much the mamimum physical memory usage should be? And if any formula to calculate it.


      Patrick

        • 1. Re: JBoss memory usage
          Gabe Sanchez Newbie

          Did, you ever get a response to this issue. I am having a similar problem.

          • 2. Re: JBoss memory usage
            Frank Grimes Newbie

            The maximum memory size of the VM process is not simply java heap (-Xmx) + perm generation (-XX:MaxPermSize).

            e.g. There is also the native code of the VM itself which needs to reside in memory, and more. (off the top of my head I don't remember everything else that's loaded)

            The following threads discuss the issue:
            http://forum.java.sun.com/thread.jspa?threadID=551003&messageID=2691640
            http://forums.bea.com/bea/thread.jspa?threadID=600016553&tstart=0

            • 3. Re: JBoss memory usage
              Frank Grimes Newbie

              From http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryMXBean.html:

              Memory
              The memory system of the Java virtual machine manages the following kinds of memory:
              1. Heap
              The Java virtual machine has a heap that is the runtime data area from which memory for all class instances and arrays are allocated. It is created at the Java virtual machine start-up. Heap memory for objects is reclaimed by an automatic memory management system which is known as a garbage collector.

              The heap may be of a fixed size or may be expanded and shrunk. The memory for the heap does not need to be contiguous.
              2. Non-Heap Memory
              The Java virtual machine manages memory other than the heap (referred as non-heap memory).

              The Java virtual machine has a method area that is shared among all threads. The method area belongs to non-heap memory. It stores per-class structures such as a runtime constant pool, field and method data, and the code for methods and constructors. It is created at the Java virtual machine start-up.

              The method area is logically part of the heap but a Java virtual machine implementation may choose not to either garbage collect or compact it. Similar to the heap, the method area may be of a fixed size or may be expanded and shrunk. The memory for the method area does not need to be contiguous.

              In addition to the method area, a Java virtual machine implementation may require memory for internal processing or optimization which also belongs to non-heap memory. For example, the JIT compiler requires memory for storing the native machine code translated from the Java virtual machine code for high performance.

              • 4. Re: JBoss memory usage
                Zaid Omar Newbie

                Hi,

                I am running a Linux server with JBoss and it seems that the memory management is going ok, maybe you should try this JAVA_OPTS:


                JAVA_OPTS="-server -Djava.awt.headless=true -Xms256M -Xmx512M -XX:PermSize=128M -XX:SurvivorRatio=16 -Xnoclassgc -XX:MaxPermSize=512m "

                Please be noted that I have 1GRAM in the box, so I think this option is suitable for 1GRAM

                Regards,
                Zaid

                • 5. Re: JBoss memory usage
                  Elias Ross Master

                  If you have concerns:

                  Always post the version of the software you're using!