This is blog 2 in the OpenJ9 locking/synchronization series (blog 1). It covers two data structures: system-monitor and GC-spinlock, which are used to enforce synchronization in OpenJ9. A system-monitor (omrthread_monitor_t) has two phases: spinlock and fallback to the operating system (OS). In the spinlock (first) phase, the system-monitor spins in a loop while performing atomic…
Category: vm
OpenJ9 Locking/Synchronization
OpenJ9 Java Virtual Machine (JVM) implements the synchronization features needed for the Java language. Also, OpenJ9 is a multi-threaded application with virtual machine (VM), garbage collector (GC), just-in-time (JIT) and other native threads which require synchronization. This is the main blog a.k.a blog 1 which summarizes the various data structures and features used to support…
Lock Reservation
This is blog 7 in the OpenJ9 locking/synchronization series (blog 1). It covers an optimization related to the object-monitors (blog 2), which are used to enforce synchronization for the Java objects. Before reading this blog, one needs to have knowledge about the object-monitors. Please read the blog on the object-monitors before reading this blog. In…
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…
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…
