Skip to content

MemoryManager

Brad Bebee edited this page Feb 13, 2020 · 1 revision

Memory Manager

The MemoryManager provides 100% Java RWStore-like technology for the native JVM process heap. Allocations are made using java.nio.ByteBuffer.allocateDirect() and are managed using a pool of direct buffers. The MemoryManager can manage up to 4TB of main memory with ZERO GC overhead.

Motivation

Due to byte code optimization, Java applications can run as fast as hand coded C application. However, there is a hidden cost associated with Java application — the maintenance of the JVM object heap. For many applications the cost of object creation, retention, and garbage collection may be negligible. However, as illustrated in the diagram below, an application with a high object creation and retention rate can get into trouble with the Garbage Collector.

jvm_heap_pressure.jpg

As the application induced “heap pressure” increases, the garbage collector must run more and more frequently. Depending on the mode in which the garbage collector is running, it may either take cores away from the application or freeze out the application entirely during GC cycles. As the application heap pressure increases, the GC cycle time increases as well. Eventually, the garbage collector runs more than the application and application throughput plummets. Larger heaps can only mask this problem temporarily since larger heaps require more GC time.

The MemoryManager provides a basis for highly scalable Java application which would otherwise be swamped by excessive heap pressure.

Clone this wiki locally