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?