APAR status
Closed as program error.
Error description
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 .
Local fix
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.
Problem summary
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.
Problem conclusion
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
Temporary fix
Comments
APAR Information
APAR number
IZ85288
Reported component name
JAVA 5 JIT
Reported component ID
620500124
Reported release
500
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-09-21
Closed date
2010-10-20
Last modified date
2010-10-20
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
JAVA 5 JIT
Fixed component ID
620500124
Applicable component levels
R500 PSN
UP
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.0","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
20 October 2010