penberg / hornet

Hornet, a JVM optimized for low-latency applications.
Other
53 stars 5 forks source link

Pauseless GC #1

Open penberg opened 11 years ago

penberg commented 11 years ago

Problem

Garbage collectors typically need to halt execution of all mutator threads during the collection cycle. This means in practice that applications are paused for 1-100 milliseconds or more depending on the type of GC being used. Pauseless GCs attempt to mitigate the problem by reducing the time to "stop-the-world" or eliminating it altogether.

Solution

The Memory Pool System advertises fast allocation and low pause times. Hornet needs to tell MPS about GC roots which can be implemented with stackmaps (Agensen, 1997) as long as the jsr bytecode is not present. Luckily, jsr is no longer used by modern Java compilers and it can be eliminated with subroutine inlining from legacy bytecode (Artho, 2005).

References

Agesen, Ole, and David Detlefs. "Finding references in Java stacks." OOPSLA. Vol. 97. 1997.

Artho, Cyrille, and Armin Biere. "Subroutine inlining and bytecode abstraction to simplify static and dynamic analysis." Electronic Notes in Theoretical Computer Science 141.1 (2005): 109-128.