一句话:提出区域内存管理与无标签分代 GC 的集成方案,并在 MLKit 中实现和评测。
论文研究如何将基于区域的内存管理与分代垃圾回收结合。方法上,提出编译期区域推断,将值关联到逻辑区域,并基于区域类型系统在运行时使用区域类型,从而避免写屏障开销并支持部分无标签 GC。该方案在 MLKit Standard ML 编译器中实现,生成原生 x64 代码,并证明若干形式性质。作者用多组基准比较 MLton 及 MLKit 开启/关闭区域推断和分代 GC 的配置。结果显示区域推断常起到分代作用;尽管区域碎片导致更多内存浪费,区域推断与分代 GC 结合通常仍优于与非分代 GC 结合。
Abstract We present a region-based memory management scheme with support for generational garbage collection. The scheme features a compile-time region inference algorithm, which associates values with logical regions, and builds on a region type system that deploys region types at runtime to avoid the overhead of write barriers and to support partly tag-free garbage collection. The scheme is implemented in the MLKit Standard ML compiler, which generates native x64 machine code. Besides demonstrating a number of important formal properties of the scheme, we measure the scheme’s characteristics, for a number of benchmarks, and compare the performance of the generated executables with the performance of executables generated with the MLton state-of-the-art Standard ML compiler and configurations of the MLKit with and without region inference and generational garbage collection enabled. Although region inference often serves the purpose of generations, combining region inference with generational garbage collection is shown often to be superior to combining region inference with non-generational collection despite the overhead introduced by a larger amount of memory waste, due to region fragmentation.
DOI 原文 ·
@article{paperbot1237,
title = {Integrating region memory management and tag-free generational garbage collection},
author = {MARTIN ELSMAN and NIELS HALLENBERG},
journal = {Journal of Functional Programming},
volume = {31},
year = {2021},
doi = {10.1017/s0956796821000010}
}