4 Replies Latest reply: Oct 17, 2012 4:32 AM by Ganesh.. RSS

    Weblogic Memory allocation question

    Mr Oracle
      I have a server with 16 Gb Ram running linux with weblogic installed (and only application deployed on the server).
      I want to reserve 4 Gb for the Linux plus any background processes needed.

      with my limited understanding of the JVM - there is only one instance of the JVM is running.
      Each user gets a thread inside the JVM for the application.

      Can I set my Heap to occupy the remaining 12Gb and all users share the Heap. (this is my current understanding)

      Or does each user get their own JVM and Heap as defined.

      I have been through all the documents I can find on the internet - there is no clear statement on any of this (lots of theory).
      Even the weblogic docs are not clear on this - they refer to Heap sizes of 1Gb.

      Major impact on performance if I get it wrong!
        • 1. Re: Weblogic Memory allocation question
          Kalyan Pasupuleti-Oracle
          Hi,

          Well first of we need to see that bit arch will make different shades to use JVM Heap.

          So for going with 32bit JVM we can only consume 4 GB of RAM as processor memory which include both Heap and Native memory.


          We can only set Max 2 GB of Heap for 32bit JVM as it will hold multiple user as Heap setting is for single JVM.

          Now if you have 64bit JVM on 64bit OS then we can increase this Heap size to more.

          So make sure that we need to allocate Heap for entire JVM instance which contain multiple threads and etc.

          and also make sure to keep Heap lesser than Native memory.

          Total Memory = Heap Memory + Native Memory.

          Still need any further details on this please let me know.

          Regards,
          kal
          • 2. Re: Weblogic Memory allocation question
            Mr Oracle
            Thanks,

            Guess I should fill in the blanks - sorry for the omission.
            I am using WLS 10.3.5 (soon to be 10.3.6)
            I am running on Ubuntu Linux 12.04 LTS x64 and the JVM is 1.6.0_35 x64 as well.

            So far perfomeance has been acceptable until a I have 10+ users - and I have suspected this to be lack of memory (hard to prove at times).

            I assume by Native memory we are talking the actual RAM installed.
            I was planning to leave 4 gb out of the JVM so with 16 Gb RAM I wanted to allocate about 12 Gb to the web server (as this is a dedicated server and runs no other applications).
            I also only have one fairly large application running (Fusion Project).

            I have been monitoring it - and have had a few "Overloaded" warnings. VisualJVM shows plenty of PermGen (512Mb) - and I have not had any "out of permGen space".

            I will try to add another 3 Gb to the heap and see what happens (I have it set at 1 GB now)
            There never are many occasions where I have 10+ users (twice a month on peak times) - but these are the critical times.
            • 3. Re: Weblogic Memory allocation question
              968878
              Good I have a virtualized machine with 4 GB of RAM and 8 GB of swap.
              The JVM has allocated 800Mb, two programmers are now using OBIEE.

              We hang failures when using Maps with Mapviewer, can occur because we need more RAM or more memory on the JVM?
              • 4. Re: Weblogic Memory allocation question
                Ganesh..
                Hi,
                Native memory is the memory used by the native libraries. Heap and permGen are what your jvm will use.
                For better perfomance, I will recommend you to use jrockit. Jrockit does not have the concept of permGen.
                Out of 16GB, if you want to allocate 12GB memory effectively to a single JVM, you can specify several JVM command line arguments.
                http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm
                This link gives the detailed explanation of all the command line arguments provided by JVM.
                You will get the optimized results by using jvm arguments.