IZ85288: GRADUAL MEMORY LEAK IN THE JAVA JIT DATA CACHE
Closed as program error.
Error Message: When running applications with a high rate of class unloading (i.e. classes are loaded, used briefly or not at all, and then unloaded quickly), the Java 5 or Java 6 JVM may gradually increase the amount of memory it allocates for the JIT data cache without any apparent limit. The symptom can be observed by collecting a Java core dump from the JVM, by sending SIGQUIT (or Ctrl-Break on Windows) to the process. The dump lists all the JIT code cache segments and JIT data cache segments that have been allocated. If there are more memory segments in the JIT data cache than in the JIT code cache, the application may be suffering from the gradual memory leak. Eventually, the data cache could grow so large that all available memory is exhausted, and the JVM could crash due to a native out-of-memory condition. This problem is more pronounced on 64-bit platforms due to the larger pointer size. . Stack Trace: N/A .
This issue can be avoided if the application can be re-worked to reduce or eliminate class unloading. If that is not feasible, the memory leak can also be stopped by setting the environment variable TR_DisableCCR=1 before invoking the JVM. Note that this can cause the JIT compiler to compile fewer methods, reducing the overall performance of the application.
The JIT data cache contains meta-data that describe JIT-compiled methods. Its size is usually a fraction of the size of the JIT code cache. For performance reasons, the maximum size of the JIT data cache is not hard-coded. The memory leak occurs when the JIT data cache is populated with an excessive amount of meta-data pertaining to classes that have been unloaded.
This defect will be fixed in: 6.0.0 SR9 5.0.0 SR12 FP2 . A new option has been added to Java 5 and Java 6 to allow users experiencing this issue to control the size of the JIT data cache. The option must be added to the JVM command line, and its syntax is: -Xjit:dataTotal=nnnn where "nnnn" is the maximum size of the data cache in kilobytes. For example, setting "nnnn" to 65536 limits the data cache to 64MB. Note that the JIT compiler will be unable to compile more methods when the JIT data cache becomes full; to pick an optimal value for "nnnn", careful measurement and tuning is recommended. If the option is not used, the JVM assumes its original behaviour, i.e. the size of the JIT data cache is unlimited. . To obtain the fix: Install build 20100928 or later
Reported component name
JAVA 5 JIT
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
JAVA 5 JIT
Fixed component ID
Applicable component levels