This program is tentative and subject to change.

Fri 25 Oct 2024 16:00 - 16:20 at San Gabriel - Memory Management and Analysis 2

Moving garbage collectors (GCs) typically free memory by evacuating live objects in order to reclaim contiguous memory regions. Evacuation is typically done either during tracing (scavenging), or after tracing when identification of live objects is complete (mark–evacuate). Scavenging typically requires more memory (memory for all objects to be moved), but performs less work in sparse memory areas (single pass). This makes it attractive for collecting young objects. Mark–evacuate typically requires less memory and performs less work in memory areas with dense object clusters, by focusing relocation around sparse regions, making it attractive for collecting old objects. Mark–evacuate also completes identification of live objects faster, making it attractive for concurrent GCs that can reclaim memory immediately after identification of live objects finishes (as opposed to when evacuation finishes), at the expense of more work compared to scavenging, for young objects.

We propose an alternative approach for concurrent GCs to combine the benefits of scavenging with the benefits of mark–evacuate, for young objects. The approach is based on the observation that by the time young objects are relocated by a concurrent GC, they are likely to already be unreachable. By performing relocation lazily, most of the relocations in the defragmentation phase of mark–evacuate can typically be eliminated. Similar to scavenging, objects are relocated during tracing with the proposed approach. However, instead of relocating all objects that are live in the current GC cycle, it lazily relocates profitable sparse object clusters that survived from the previous GC cycle. This turns the memory headroom that concurrent GCs typically ``waste'' in order to safely avoid running out of memory before GC finishes, into an asset used to eliminate much of the relocation work, which constitutes a significant portion of the GC work.

We call this technique mark–scavenge and implement it on-top of ZGC in OpenJDK in a collector we call MS-ZGC. We perform a performance evaluation that compares MS-ZGC against ZGC. The most striking result is (up to) 91% reduction in relocation of dead objects (depending on machine-dependent factors).

This program is tentative and subject to change.

Fri 25 Oct

Displayed time zone: Pacific Time (US & Canada) change

16:00 - 17:40
Memory Management and Analysis 2OOPSLA 2024 at San Gabriel
16:00
20m
Talk
Mark--Scavenge: Waiting for Trash to Take Itself Out
OOPSLA 2024
Jonas Norlinder Uppsala University, Erik Österlund Oracle, David Black-Schaffer Uppsala University, Tobias Wrigstad Uppsala University
16:20
20m
Talk
Mix Testing: Specifying and Testing ABI Compatibility of C/C++ Atomics Implementations
OOPSLA 2024
Luke Geeson University College London, James Brotherston , Wilco Dijkstra Arm Ltd, Alastair F. Donaldson Imperial College London, Lee Smith Arm, Tyler Sorensen University of California at Santa Cruz, John Wickerson Imperial College London
16:40
20m
Talk
PROMPT: A Fast and Extensible Memory Profiling Framework
OOPSLA 2024
Ziyang Xu Princeton University, Yebin Chon Princeton University, Yian Su Northwestern University, Zujun Tan Princeton University, USA, Sotiris Apostolakis Google, Simone Campanoni Northwestern University, David I. August Princeton University
17:00
20m
Talk
Semantics of Remote Direct Memory Access: Operational and Declarative Models of RDMA on TSO Architectures
OOPSLA 2024
Guillaume Ambal , Brijesh Dongol University of Surrey, Haggai Eran NVIDIA, Vasileios Klimis Queen Mary University of London, Ori Lahav Tel Aviv University, Azalea Raad Imperial College London
17:20
20m
Talk
StarMalloc: Verifying a Modern, Hardened Memory Allocator
OOPSLA 2024
Antonin Reitz Inria, Aymeric Fromherz Inria, Jonathan Protzenko Microsoft Azure Research