JavaOne is back! ➱ https://oracle.com/javaone
A safepoint is a global JVM state where the Java world is stopped. It is therefore safe, as in exclusive access, to inspect and process by the JVM. This concept is central to many runtimes providing some form of Automatic Memory Management.
Markus Grönlund (https://twitter.com/marchaos) from Oracle's Java Platform Group presents, in this HotSpot Deep Dive video, how safepoints are implemented in the HotSpot Java Virtual Machine (JVM). He also introduces some related JVM concepts and structures.
⎯⎯⎯⎯⎯⎯ Errata ⎯⎯⎯⎯⎯
19:38 The description of how the VMThread removes edges in the state machine by arming the poll pages for threads is missing the directed edge [blocked_transition, VM]. In the graph, it is represented as an undirected edge, which made the cut challenging to depict accurately.
26:48 The assembly listing for the callee method getSuccessor(I, I) is taken from a research branch and does not accurately reflect the code residing in mainline. The mainline code looks like this:
mov dword ptr [rsp-9000h],eax
push rbp // frame push
sub rsp,30h
add edx,r8d // add first and second parameter
mov rax,rdx // return value
add rsp,30h
pop rbp // frame pop
cmp rsp,qword ptr [r15+128h] // poll word test
ja 00000237`c8cccc7c
ret
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
More information ➱ https://openjdk.org/
More content from Markus ➱ https://inside.java/u/MarkusGronlund/
Tags: #Java #OpenJDK #HotSpot #JVM