Getting a Handle on Unmanaged Memory
Nick Wanninger, Tommy McMichen, Simone Campanoni, Peter Dinda

TL;DR
This paper introduces ALASKA, a compiler and runtime system that enables unmanaged languages to use heap object movement via handles, effectively reducing fragmentation and memory usage without requiring code modifications.
Contribution
ALASKA provides a novel handle-based approach with compiler and runtime support to enable heap compaction in unmanaged languages, bridging the gap with managed language memory management.
Findings
ALASKA reduces memory fragmentation and usage by up to 40% in Redis.
Handles enable seamless heap object movement in unmanaged languages.
ALASKA incurs manageable overheads on large benchmarks.
Abstract
The inability to relocate objects in unmanaged languages brings with it a menagerie of problems. Perhaps the most impactful is memory fragmentation, which has long plagued applications such as databases and web servers. These issues either fester or require Herculean programmer effort to address on a per-application basis because, in general, heap objects cannot be moved in unmanaged languages. In contrast, managed languages like C# cleanly address fragmentation through the use of compacting garbage collection techniques built upon heap object movement. In this work, we bridge this gap between unmanaged and managed languages through the use of handles, a level of indirection allowing heap object movement. Handles open the door to seamlessly employ runtime features from managed languages in existing, unmodified code written in unmanaged languages. We describe a new compiler and runtime…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsCognitive Functions and Memory · Memory Processes and Influences
