Replacing Arraylets with OffHeap for Balanced GC Policy: A New Era in Memory Layout

Authors: Abdulrahman Alattas and Aleks Micic Introduction In OpenJ9’s Balanced GC policy, the Java heap is divided into up to 2047 fixed-size regions to reduce pause times and increase the efficiency of garbage collection. This layout poses a challenge for large arrays: if an array exceeds the size of a region, it cannot be allocated contiguously….

Optimizing OpenJ9’s Balanced GC Policy for Throughput with Dynamic Breadth First (DBF) Scan Ordering

Optimizing application throughput continues to be a primary goal for any application developer seeking improved application performance. Before I can talk about the details of DBF scan ordering, there are some terms and concepts that must be discussed first. To understand DBF scan ordering, a base knowledge of Garbage Collection (GC), OpenJ9 GC policies, and…

Balanced GC performance improvements: Eden + heap sizing improvements

Open J9’s Balanced GC policy is a region based, generational collector, which aims to provide a bound on worst case pause times, by eliminating the need for frequent global garbage collections. A more detailed description of how Balanced GC policy works, along with some of its advantages over the Gencon GC policy, can be found…

Default Java Maximum Heap Size is changed for Java 8

Background The Maximum Java Heap Size (Xmx) is the maximum amount of memory that Java application can uses. A lower Xmx value will cause a decrease in performance due to JVM has to force frequent garbage collections in order to free up space, also if the Xmx value is lower than the amount of live…

Dynamic Threads for Scavenger GC

Background In order for Scavenger to find all live objects, it uses multiple threads and parallelizes the work as it traverses through the object trees. The number of working threads is dependent on the system: systems with more threads can use more threads to work on highly parallelized tasks. More information about this topic can…

Categoriesgc