一句话:实现并评估 Jikes RVM 上首个 on-the-fly 并行复制式 GC Sapphire,借助硬/软件事务与模型检验保证正确性。
构建高性能垃圾收集器本身困难,而完全并发的 on-the-fly 复制/压缩收集器更难。本文在 Jikes RVM Java 虚拟机中实现 Sapphire 算法,给出首个 on-the-fly、并行、复制式垃圾收集器,并报告工程经验。关键创新包括用硬件与软件事务实现对象复制、并发管理 Java 引用类型,以及复制式收集器中易变字段的无锁管理。作者首次使用真实基准全面评估 Sapphire 的性能和作为低延迟收集器的适用性,并对该高度并发系统的关键组件进行模型检验,以提供正确性保证。这些结果与经验为在完整 JVM 中构建并发复制收集器提供了参考。
Constructing a high-performance garbage collector is hard. Constructing a fully concurrent ‘on-the-fly’ compacting collector is much more so. We describe our experience of implementing the Sapphire algorithm as the first on-the-fly, parallel, replication copying, garbage collector for the Jikes RVM Java virtual machine (JVM). In part, we explain our innovations such as copying with hardware and software transactions, on-the-fly management of Java’s reference types, and simple, yet correct, lock-free management of volatile fields in a replicating collector. We fully evaluate, for the first time, and using realistic benchmarks, Sapphire’s performance and suitability as a low latency collector. An important contribution of this work is a detailed description of our experience of building an on-the-fly copying collector for a complete JVM with some assurance that it is correct. A key aspect of this is model checking of critical components of this complicated and highly concurrent system.
DOI 原文 ·
@article{paperbot311,
title = {Transactional Sapphire},
author = {Tomoharu Ugawa and Carl G. Ritson and Richard E. Jones},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {40},
number = {4},
year = {2018},
doi = {10.1145/3226225}
}