Getting a Handle on Unmanaged Memory
International Conference on Architectural Support for Programming Languages and Operating Systems(2024)
摘要
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 system, ALASKA,
that acts as a drop-in replacement for malloc. Without any programmer effort,
the ALASKA compiler transforms pointer-based code to utilize handles, with
optimizations to reduce performance impact. A codesigned runtime system manages
this level of indirection and exploits heap object movement via an extensible
service interface. We investigate the overheads of ALASKA on large benchmarks
and applications spanning multiple domains. To show the power and extensibility
of handles, we use ALASKA to eliminate fragmentation on the heap through
compaction, reducing memory usage by up to 40
更多查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要