RedLine Research
Tufts University School of Engineering


Heap Assertions

This project explores novel garbage-collection-based approaches for checking large-scale heap properties with low overhead.


"What Can the GC Compute Efficiently? A Language for Heap Assertions at GC Time,"
Christoph Reichenbach, Neil Immerman, Yannis Smaragdakis, Edward E. Aftandilian, and Samuel Z. Guyer
in OOPSLA 2010[PDF]

"GC Assertions: Using the Garbage Collector to Check Heap Properties",
Edward E. Aftandilian and Samuel Z. Guyer,
in PLDI 2009[PDF]


Samuel Z. GuyerEdward AftandilianChristoph Reichenbach (UMass)Yannis Smaragdakis (UMass)Neil Immerman (UMass)


Breadcrumbs is a system for making dynamic program analyses context sensitive. Our focus is on providing context sensitivity for deployable bug detection analyses, which require a compact and efficient representation of dynamic calling contexts. The technique builds on PCC (probabilistic calling context) by providing an algorithm that can reconstruct the call stack represented by a PCC value for use in bug reporting and logging.


"Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses",
Michael D. Bond, Graham Z. Baker, and Samuel Z. Guyer,
in PLDI 2010[PDF]


Samuel Z. GuyerMike Bond • Graham Baker (MITLL)


Heapviz is a tool for visualizing and exploring snapshots of the heap obtained from running Java programs. Heapviz displays the Java heap as a graph where nodes are objects and pointers are edges. We apply a novel summarization algorithm to reduce the size of the graph, and we design our visualization to promote exploration and understanding of the object graph.

Project page

Please see our Heapviz project page for an example video and images.


"Heapviz: Interactive Heap Visualization for Program Understanding and Debugging,"
Edward E. Aftandilian, Sean Kelley, Connor Gramazio, Nathan Ricci, Sara L. Su, and Samuel Z. Guyer,
in SOFTVIS 2010[PDF]


Samuel Z. GuyerSara SuEdward Aftandilian • Sean Kelley • Connor GramazioNathan Ricci

Storage Optimization

More information to follow...

Memory Debugging

More information to follow...


Samuel Z. GuyerNathan RicciGary Sevitsky (IBM)


Former Students

Karl Cronburg (PhD; MathWorks)
Lucia A. Nunez (PhD; Northeastern)
Raoul Veroy
Hu Huang (PhD; MathWorks)
Nathan Ricci (PhD; MSFT)
Edward Aftandilian (PhD; GitHub)
Graham Baker (MS; MITLL)
Robert Dockins (PhD; Galois)
Brandon Lucia (PhD; CMU)
Adam Lewis (MS)
Connor Gramazio (PhD; Amazon)
Sean Kelley (UGrad)
Ben Schwalb (UGrad)


Samuel Z. Guyer
Sara Su
Mike Bond (UT Austin)


Elephant tracks

Elephant tracks is garbage collection tracing tool based on the Merlin algorithm. It is implemented as a JVMTI agent using a combination of GC hooks and bytecode rewriting to capture changes to the heap. Unlike previous implementations, Elephant Tracks uses method call/return as its notion of time (but can be easily modified to use allocation time). The output is a trace of object allocations, pointer updates, method call/return, and object deaths. Object death times are precise: they indicate the earliest possible point that the object could have been collected.

This tool is available for download one the Elephant Tracks page.

Updated 8/24/2021