Almost every modern program stores its data in pointer-based data structures. As a result, any tool that wants to discover properties of that data – either statically or dynamically – needs to understand the organization of objects in the heap. The increasing scale and complexity of these structures, however, has made this job very difficult. The problem is particularly vexing for static analysis, but also affects dynamic analysis, as well as runtime systems, such as garbage collectors, which must manage these data structures. But what constitutes a suitable characterization of heap behavior? Prior work mostly represents the extremes: at the lowest level, producing extremely detailed traces or graphs, or at the highest level, producing summary statistics, such as instance counts, pointer in/out degree, or lifetime profiles. While these representations may be useful for specific purposes, they are far removed from the model that the programmer has in his or her mind. In this talk I will discuss this prior work, including past heap analysis projects from my own group, and describe our current work on tools that produce a more intuitive story about the large-scale structures in the heap, how they change over time, and how that relates to the program structure.
I am an Assistant Professor in the Department of Computer Science at Tufts University.
Research interests: I work in a variety of different areas of programming language research, including compilers, optimizations, program analysis, and run-time systems.