We make two contributions in the area of memory profiling. The first is a real-time, memory-profiling toolkit we call Memcov that provides both allocation/deallocation and access profiles of a running program. Memcov requires no recompilation or relinking and significantly reduces the barrier to entry for new applications of memory profiling by providing a clean, non-invasive way to perform two major functions: processing of the stream of memory-allocation events in real time, and monitoring of regions in order to receive notification the next time they are hit.
Our second contribution is an adaptive memory profiler and leak detector called MemcovMPC. Built on top of Memcov, MemcovMPC uses Model Predictive Control to derive an optimal control strategy for leak detection that maximizes the number of areas monitored for leaks, while minimizing the associated runtime overhead. Areas that are observed not to have been accessed for a user-definable period of time are reported as potential leaks. Our approach requires neither mark-and-sweep leak detection nor static analysis, and reports a superset of the memory leaks actually occurring as the program runs. The set of leaks reported by MemcovMPC can be made to approximate the actual set more closely by lengthening the threshold period.
In Proc. of NGS'07, the Next Generation Software Workshop at IPDPS, March, 2007, Long Beach, California, USA.
* This work was partially supported by the NSF Faculty Early Career
Development Award CCR01-33583 and the NSF CSR-AES05-09230 Award.