Stop and go: Understanding yieldpoint behavior

dc.contributor.authorLin, Yien
dc.contributor.authorWang, Kunshanen
dc.contributor.authorBlackburn, Stephen M.en
dc.contributor.authorHosking, Antony L.en
dc.contributor.authorNorrish, Michaelen
dc.date.accessioned2025-12-16T01:40:44Z
dc.date.available2025-12-16T01:40:44Z
dc.date.issued2015-06-14en
dc.description.abstractYieldpoints are critical to the implementation of high performance garbage collected languages, yet the design space is not well understood. Yieldpoints allow a running program to be interrupted at well-defined points in its execution, facilitating exact garbage collection, biased locking, on-stack replacement, profiling, and other important virtual machine behaviors. In this paper we identify and evaluate yieldpoint design choices, including previously undocumented designs and optimizations. One of the designs we identify opens new opportunities for very low overhead profiling. We measure the frequency with which yieldpoints are executed and establish a methodology for evaluating the common case execution time overhead. We also measure the median and worst case time-to-yield. We find that Java benchmarks execute about 100M yieldpoints per second, of which about 1/20000 are taken. The average execution time overhead for untaken yieldpoints on the VM we use ranges from 2.5% to close to zero on modern hardware, depending on the design, and we find that the designs trade off total overhead with worst case time-to-yield. This analysis gives new insight into a critical but overlooked aspect of garbage collector implementation, and identifies a new optimization and new opportunities for very low overhead profiling.en
dc.description.sponsorshipthrough the Department of Communications and the Australian Research Council through the ICT Centre of Excellence Program. This work is supported by the Australian Research Council under grant ARC DP140103878, and the National Science Foundation under grants nos. CNS-1161237 and CCF-1408896. NICTA is funded by the Australian Governmenten
dc.description.statusPeer-revieweden
dc.format.extent11en
dc.identifier.issn1523-2867en
dc.identifier.otherORCID:/0000-0002-4487-6923/work/167651635en
dc.identifier.otherORCID:/0000-0003-1163-8467/work/167652646en
dc.identifier.scopus85105386753en
dc.identifier.urihttps://hdl.handle.net/1885/733795383
dc.language.isoenen
dc.rightsPublisher Copyright: © 2015 Owner/Author.en
dc.sourceACM SIGPLAN Noticesen
dc.subjectcode patchingen
dc.subjectman-aged codeen
dc.subjectmanaged run-timeen
dc.subjectsafe pointsen
dc.subjectyieldpointsen
dc.titleStop and go: Understanding yieldpoint behavioren
dc.typeJournal articleen
dspace.entity.typePublicationen
local.bibliographicCitation.lastpage80en
local.bibliographicCitation.startpage70en
local.contributor.affiliationLin, Yi; School of Computing, ANU College of Systems and Society, The Australian National Universityen
local.contributor.affiliationWang, Kunshan; The Australian National Universityen
local.contributor.affiliationBlackburn, Stephen M.; School of Computing, ANU College of Systems and Society, The Australian National Universityen
local.contributor.affiliationHosking, Antony L.; Purdue Universityen
local.contributor.affiliationNorrish, Michael; CSIROen
local.identifier.citationvolume50en
local.identifier.doi10.1145/2754169.2754187en
local.identifier.puread59257e-c7ca-4a08-aa48-1d448ddfef0aen
local.identifier.urlhttps://www.scopus.com/pages/publications/85105386753en
local.type.statusPublisheden

Downloads