Class-Specific Spin Parameters (CSSP)

This is blog 8 in the OpenJ9 locking/synchronization series (blog 1). This blog covers an OpenJ9 feature which allows spin control parameters to be varied on a per-class basis. Before reading this blog, one needs to know about the system-monitors (blog 2), object-monitors (blog 3), three-tier spinning (blog 4) and adaptive spinning (blog 5). Please…

Categoriesvm

Three-Tier Spinning

This is blog 4 in the OpenJ9 locking/synchronization series (blog 1). Before reading this blog, one needs to know about the system-monitors (blog 2), GC-spinlocks (blog 2), and object-monitors (blog 3). Please read the aforementioned blogs before reading this blog. Three-tier spinning is used to make acquiring locks more efficient when the lock contention is…

Categoriesvm

A simple JITaaS demo on Docker containers

JIT as a Service (JITaaS) is a fascinating feature that is being developed for the OpenJ9 JVM. The design separates the JIT compilation process from the JVM, enabling distributed JIT compilation, which provides many advantages. This post provides a simple method to try out JITaaS, based on docker containers. So let’s get started! You can…

Concurrent Scavenge Garbage Collection Policy

This post is meant to serve as a technical overview of the Concurrent Scavenge (CS) Garbage Collection (GC) policy, from the perspective of a Just-In-Time (JIT) compiler. It explains various CS and GC concepts, serving as background to later discussion on implementation details in JIT compiler’s Code Generator (CodeGen) and Optimizer, as well as the…

Moving to OpenJDK with Eclipse OpenJ9

Migrating to an OpenJDK with OpenJ9 is straightforward for most applications because they use the same stable and compatible APIs from the OpenJDK project, but with a superior execution engine.  Both execution engines – the OpenJ9 VM and the HotSpot VM – implement the Java Virtual Machine Specification, which ensures that applications that run on…