Plug: Automatically Tolerating Memory Leaks in C and C++ Applications (2008)
| Citations: | 2 - 0 self |
BibTeX
@TECHREPORT{Novark08plug:automatically,
author = {Gene Novark and Emery D. Berger and Benjamin G. Zorn},
title = {Plug: Automatically Tolerating Memory Leaks in C and C++ Applications},
institution = {},
year = {2008}
}
OpenURL
Abstract
Memory leaks remain a significant challenge for C and C++ developers. Leaky applications become slower over time as their working set grows, triggering paging, and can eventually become unresponsive. At the same time, memory leaks remain notoriously difficult to debug, and comprise a large number of reported bugs in mature applications. Existing approaches like conservative garbage collection can only remedy leaks of unreachable objects. In addition, they can impose unacceptable runtime or space overheads, or cause legal C/C++ applications to fail or retain excessive memory. This paper presents Plug, a runtime system for C/C++ applications that allows applications to deliver high performance in the face of both reachable and unreachable memory leaks. It uses a novel heap layout that isolates leaked objects from non-leaked objects, allowing them to be completely paged out to disk. Plug further reduces the space impact of leaks by employing virtual compaction, an approach that leverages virtual memory primitives to allow physical memory compaction without moving objects. We demonstrate Plug’s low overhead and its effectiveness at tolerating real memory leaks. 1.







