An OutOfMemoryError does not necessarily imply a memory leak. The issue might simply be a configuration issue, for example if the specified heap size (or the default size if not specified) is insufficient for the application[1]. In that case, you need to figure out which configuration file to modify.
jps Command
You can use jps (Java Virtual Machine Process Status Tool) to list all local VM identifiers of instrumented HotSpot Java Virtual Machines (JVMs) on the target Linux system. For example, on my system, it lists:$ jps 17291 Server 17468 Jps 7883 Launcher
This list includes one Integrated WebLogic Server (i.e., Server) and one JDeveloper (i.e., Launcher). Note that JDeveloper and Integrated WLS use their own JVM's. So, if you're running Integrated WLS from JDeveloper, you need to know which JVM has thrown the OutOfMemoryError exception.
Configuration Files
Each application uses its own configuration file to start its JVM and you need to know where to find it.
For example, to change heap space sizes, you can modify those parameters in:
- JDeveloper
- $JDEV_HOME/jdev/bin/jdev.conf
- or 'which jdev' and find its containing directory; jdev.conf should be located in the same directory
- Note that jdev.conf includes ide.conf which contains the following configurations:
- AddVMOption -Xmx640M
- AddVMOption -Xms128M
- WebLogic Server
- You have two options:
- Modify MEM_ARGS in the setDomainEnv.sh
- $setenv USER_MEM_ARGS "-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -XX:CompileThreshold=8000"
- This will override the settings from WLS scripts as shown below:
if [ "${USER_MEM_ARGS}" != "" ] ; then MEM_ARGS="${USER_MEM_ARGS}" export MEM_ARGS fi
- If this is Integrated WLS, your script folder is located under:
- ../system11.1.1.6.38.61.92/DefaultDomain/bin
- On JDev 12c, the heap size is set by the following line (which is embedded in setStartupEnv.sh):[5]
- set SERVER_MEM_ARGS_64=-Xms1024m -Xmx3072m
- You can trace the settings starting from startWebLogic.sh, to setDomainEnv.sh, to setSOADomainEnv.sh, and finally to setStartupEnv.sh.
- You have two options:
- Eclipse
/eclipse.ini
Project Properties
Here is another case which requires the change of project properties in JDeveloper:
- Scenario:
- JDeveloper is used to deploy "server-setup-seed-deploy-test" target with "Run Ant Target" and it threw "java.lang.OutOfMemoryError: PermGen space" exception.[2]
- Solution:
- In Jdev window, right click the project file > Project Properties > Ant > Process > Java Options:
- -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m
- Note that a new JVM is launched for the Ant process and it uses the above settings.
References
- Understanding Garbage Collection
- HotSpot—java.lang.OutOfMemoryError: PermGen space (Xml and More)
- A Case Study of java.lang.OutOfMemoryError: GC overhead limit exceeded (Xml and More)
- Understanding Garbage Collector Output of Hotspot VM (Xml and More)
- Setting Heap size for Integrated WLS on JDev 12c
- Which JDK is my FMW 11g WebLogic Domain Configured to Use?
2 comments:
Hi,
I am deploying Fusion Order Demo using Jdev, it had Out of Merroy error by default. after i add permSize through your suggestion like this, it works fine.
In Jdev window, right click the project file > Project Properties > Ant > Process > Java Options:
-Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m
my problem is i would like to use command "$ANT_HOME/bin/ant server-setup-seed-deploy-test" to deploy in a shell script, then where should i change the parameter for permSize. thanks
Sorry, I didn't read this until now. Did you try adding -verbose or -debug to your command line? Maybe it can show you how JVM was setup in your environment. If you have resolved this issue, could you share us with your solution? Thanks!
Post a Comment