We just started to deploy and run our first ADF applications. The
application is deployed to cluster which consists of two managed servers ADF1 (resides
on the same machine as Admin server – HOST1) and ADF2 (resides on another host –
HOST2). We have two medium size ADF applications deployed to cluster.
After rebooting the machine I already saw that heap size is about
of 50% of usage on both managed servers. However there are 0 sessions running
on both managed servers.
After changing default JAVA Memory arguments in setDomainEnv.sh on
-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"
I am still getting up to 33% of Heap already used.
So my question is why the heap is already used
by 33% after rebooting the servers when no sessions are running on the server?
system RHEL 6.2 64 bit
/u01/app/oracle/product/fmw/jdk1.7.0_17/bin> ./java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
The 33% usage is likely not an issue. Now, if you start getting Heap Errors or OutOfMemory errors, I would start being concerned.
The heap usage really depends on how the ADF application was written and configured by your developers. By default, ADF will automatically consume a significant portion of heap because of the Application Module components. Application Modules handle all your ADF app's Model Layer logic, database calls, and data chaching. To take this one step further, if your application is using heavy caching, like Top Link, then even more heap may be used. Overall, it just depends on how many users, how your application was written and configured.
See this for app module tuning: http://docs.oracle.com/cd/E15523_01/web.1111/b31974/bcampool.htm
If heap does start becoming a problem, a JVM profiler is very helpful in identifying if there are application memory leaks, etc.
Yes, this was exactly my point earlier. Application Modules reserve instances, and thus heap, so when new users log onto the system, its ready to start serving requests. Depending on how the app was coded and how much cache it starts up, that could be the reason for the amount of heap usage.
If you do start running out of heap when users start logging on, your developers might want to consider the application module tuning and/or more managed ADF servers to off the load a bit.