Results 1 -
3 of
3
Abstracting Runtime Heaps for Program Understanding
, 2012
"... Modern programming environments provide extensive support for inspecting, analyzing, and testing programs based on the algorithmic structure of a program. Unfortunately, support for inspecting and understanding runtime data structures during execution is typically much more limited. This paper provi ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Modern programming environments provide extensive support for inspecting, analyzing, and testing programs based on the algorithmic structure of a program. Unfortunately, support for inspecting and understanding runtime data structures during execution is typically much more limited. This paper provides a general purpose technique for abstracting and summarizing entire runtime heaps. We describe the abstract heap model and the associated algorithms for transforming a concrete heap dump into the corresponding abstract model as well as algorithms for merging, comparing, and computing changes between abstract models. The abstract model is designed to emphasize high-level concepts about heap-based data structures, such as shape and size, as well as relationships between heap structures, such as sharing and connectivity. We demonstrate the utility and computational tractability of the abstract heap model by building a memory profiler. We then use this tool to check for, pinpoint, and correct sources of memory bloat from a suite of programs from DaCapo.
Abstract visualization of runtime memory behavior
- Proc. 6th IEEE Int. Workshop on Visualizing Software for Understanding and Analysis
, 2011
"... Abstract—We present a system for visualizing memory reference traces, the records of the memory transactions performed by a program at runtime. The visualization consists of a structured layout representing the levels of a cache and a set of data glyphs representing the pieces of data in memory bein ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract—We present a system for visualizing memory reference traces, the records of the memory transactions performed by a program at runtime. The visualization consists of a structured layout representing the levels of a cache and a set of data glyphs representing the pieces of data in memory being operated on during application runtime. The data glyphs move in response to events generated by a cache simulator, indicating their changing residency in the various levels of the memory hierarchy. Within the levels, the glyphs arrange themselves into higher-order shapes representing the structure of the cache levels, including the composition of their associative cache sets and eviction ordering. We make careful use of different visual channels, including structure, motion, color, and size, to convey salient events as they occur. Our abstract visualization provides a high-level, global view of memory behavior, while giving insight about important events that may help students or software engineers to better understand their software’s performance and behavior. I.
TAKING A CLOSER LOOK AT MEMORY UTILIZATION IN C/C++ PROGRAMS BY
"... Computer system performance depends on the efficiency and precision of all of its components. When it comes to software, the primary goal is to ensure the most effective use of the hardware resources while maintaining the accuracy of the computations being handled. While many software developers foc ..."
Abstract
- Add to MetaCart
Computer system performance depends on the efficiency and precision of all of its components. When it comes to software, the primary goal is to ensure the most effective use of the hardware resources while maintaining the accuracy of the computations being handled. While many software developers focus their attention on the running time complexity and parallelism of computations in terms of CPU utilization; there is an evident lack of memory map analysis and RAM usage efficiency. mVizion is a novel visualization tool, combined with a digital forensic tool Cafegrind, shows how different memory utilization patterns are being used by different C/C++ programs, running in Unix/Linux environments. Cafegrind is used to produce different traces of heap memory accesses, including both allocations and deallocation, from different applications. mVizion is then used to interpret these traces, and through the use of multiple windows present detailed information about each distinct data structure; thus offering a comprehensive view and deeper understanding of a program inner memory workings. The evaluation of mVizion shows a fair performance and its capacity to scale to large log data files. ii To my Mom iii Acknowledgments I’d like to thank my advisor, professor Roy Campbell, and my mentor, Alejandro Gutierrez, for the support, leadership,

