Skip to main content

Overview

The Persistent Reusable JVM (Shiraz) is a Java Virtual Machine (JVM) that runs short, repetitive transactions efficiently. The performance provided by Shiraz enables customers to implement a new business function, such as CICS (Customer Information Control System) transactions and DB/2 stored procedures in Java, without losing the performance they normally expect in a high volume transaction processing environment. Shiraz is the standard JVM for CICS/390 (zSeries).

Some of the new features of the Shiraz JVM are:

  1. Code sharing among a set of JVMs. The class objects and jitted code of a large number of classes are shared among a set of JVMs.

  2. Reusable JVMs. When possible, JVMs are reused rather than terminated after running an application. One ingredient necessary for JVM reuse is a quick Reset GC.

  3. Split Java Heaps. There are separate heaps for shared classes, trusted middleware (itself a new concept), and the short lived application (Transient) objects.

Much of the design and implementation of Reset GC and the Middleware and Transient heaps was performed at the IBM Haifa Research Labs. One innovation is the dynamic division of a contiguous space in memory into two separate (Middleware and Transient) heaps. For GC, a generational scheme is employed. The lifetimes of objects in the transient heap are not expected to outlast an application while objects in the middleware heap are expected to be long-lived. At the completion of an application Reset GC occurs. Objects in the transient heap that belong in the middleware heap are moved there. A quick determination is made as to whether there remain any live objects in the short-lived heap. If none exist (the expected result), the entire transient heap is reclaimed.