Calculating storage requirements for JVM servers
To run a JVM server successfully in a CICS® region, you must ensure that enough free MVS™ storage is available for both the JVM and its deployed applications to use.
About this task
The storage that is required for a JVM server, and the Java™ applications in it, does not come from CICS-managed storage areas such as the DSA, EDSA, or GDSA. Some storage areas are managed by the Language Environment® handling requests, such as malloc() issued by C code. The remaining storage areas are managed directly by the JVM, by using z/OS® storage management requests such as IARV64. Both of these storage area management types use storage from the available MVS private areas. It is important to ensure that sufficient non-allocated private area region storage is available in the 24-bit, 31-bit, and 64-bit addressing areas. CICS cannot use its short-on-storage mechanism when private area region storage is running low.
- Java heap
- Loading of Java classes
- JIT compilation caches
- Native stack
- Java monitors
- Java threads
- UNIX shared libraries
The Java heap is a contiguous pre-allocated block of 64-bit storage that is used to store the runtime data area for all objects and arrays. It is managed by the JVM garbage collection process, and its size can only be modified if the JVM is restarted. The other JVM storage areas are more dynamic in size and their size can vary depending on usage. In addition, on top of the storage areas that are allocated by the JVM, you must also consider other components that use MVS private area and interact with the JVM such as JDBC type 2 drivers, IBM® MQ Java adapter, or third-party tools.
To estimate the amount of storage used by the JVM in the different MVS private storage areas, you can use the following procedure.