Skip to main content


         This documentation site is for previous versions. Visit our new documentation site for current releases.      
 

This content has been archived and is no longer being updated.

Links may not function; however, this content may be relevant to outdated versions of the product.

Troubleshooting: Out-of-memory error from -Xmxcl classload limit setting (IBM JVM 5.0)

Updated on May 7, 2019

Symptom

A system running the IBM JVM 5.0 crashes with repeated java.lang.OutOfMemoryError exceptions.

A review of the running application shows that the application is not running out of heap space, and increasing the allocated heap does not prevent the exception. Looking at heap dumps generated after the failure shows that the heap is not full.

Background

IBM's Java Virtual Machine 5.0 has a built-in limit on the number of classloaders that it permits in a JVM. This causes problems when executing applications that dynamically generate Java, including Process Commander.

Process Commander's Rules Assembly subsystem assigns one classloader for each rule that is dynamically converted to Java, compiled into a Java class, and loaded into the JVM. The number of classloader objects that Process Commander uses is proportional to the number of Java classes generated for the rules in a given configuration.

Solution

What to do for IBM JVM 5.0 SR-5 and later

As the classloader limit no longer applies to these JVM versions, look for other causes for an out-of-memory exception. Refer to Support Play: Tuning the IBM JVM 5.0 for performance for information on other out-of-memory errors.

What to do for IBM JVM 5.0 SR-4 and earlier

Updating a JVM to SR-5 or later should correct an -Xmxcl out-of-memory error, and Pegasystems recommends you make this upgrade to the JVM.

If you choose not to upgrade, use the JVM parameter –Xmxcl to set the number of Java classloaders that can be loaded in the JVM at one time to a value greater than the default setting of 8192.

The Pega-recommended value for -Xmxcl is 22,000. To specify the recommended value on the command line, enter: –Xmxcl22000.

If errors persist, start with the value of the Process Commander property fua/global/instancecountlimit, which is set in prconfig.xml, and increase it by 10 percent to provide a margin for growth. The default of instancecountlimit is 20,000. Edit prconfig.xml to set a higher value, and then set -Xmxcl on the command line.

The value assigned to -Xmxcl is JVM-wide, while instancecountlimit applies only to Process Commander. To avoid a possible conflict, ensure that the JVM's -Xmxcl value is set to be greater than PRPC's instancecountlimit value.

 

Have a question? Get answers now.

Visit the Support Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega.com is not optimized for Internet Explorer. For the optimal experience, please use:

Close Deprecation Notice
Contact us