Home

safepointfuncties

Safepointfuncties verwijzen naar de punten in de uitvoering van een programma waar de runtime op een veilige manier alle threads kan stoppen voor onderhoudstaken. Deze concepten worden vooral gebruikt in omgevingen met een automatische geheugenbeheerder, zoals de Java Virtual Machine, maar komen ook voor in andere managed runtimes. Het doel is om een consistent en inspecteerbaar moment te bieden waarop de toestand van het programma kan worden onderzocht en aangepast zonder dat er onduidelijke referenties of incomplete bewerkingen bestaan.

Werking en doel. Tijdens de uitvoering worden safepoints geïnstrumenteerd in de code zodat op bepaalde locaties

Implementatievarianten. In enkele systemen gebeurt dit via polling safepoints, waarbij threads periodiek een globale vlag controleren.

Voordelen en nadelen. Safepoints leveren voorspelbare en consistente GC- en deoptimalisatiepunten op, wat bijdraagt aan de

Zie ook. Garbage collection, deoptimalisatie, runtime-synchronisatie.

of
tussen
instructies
gecontroleerd
kan
worden
of
er
een
safepoint
is
bereikt.
Wanneer
alle
threads
een
safepoint
hebben
bereikt,
kan
de
runtime
ingrijpen:
geheugenbeheerder
kan
garbage
collection
uitvoeren,
stack-
en
registertoestanden
kunnen
worden
geanalyseerd,
en
optimalisaties
zoals
deoptimalisatie
of
patching
van
code
kunnen
plaatsvinden.
Nadat
de
benodigde
onderhoudstaken
zijn
afgerond,
worden
de
threads
hervat.
Andere
benaderingen
plaatsen
safepoints
op
specifieke,
deterministische
locaties
zoals
methodeloops
of
oproepen,
vaak
ondersteund
door
de
JIT-compiler.
Sommige
runtimes
gebruiken
speciale
instructies
of
tables
die
de
aanwezigheid
van
een
safepoint
markeren
en
de
interrupt
toestaan
zonder
onduidelijke
side-effecten.
correctheid
en
herstelbaarheid
van
de
runtime.
Het
nadeel
kan
bestaan
uit
extra
overhead
tijdens
de
uitvoering
en
mogelijk
langere
pauzes
tijdens
onderhoudsperioden,
afhankelijk
van
de
implementatie
en
workloads.