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.
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.