ShadowData: Shadowing Heap Objects in Java

Workshop Paper: PASTE'13, June, 2013

In this paper we compare different approaches to maintain shadow state for heap objects in Java. We identify dynamic analyses that need to shadow heap objects, and we consider their requirements. We describe three very different approaches in detail: using a hash map, heap tagging, and injecting shadow fields.

We discuss the tradeoffs between the different approaches, and we empirically evaluate the viability and performance of the hash map and heap tagging approaches, the two approaches that work on Hotspot, the most prevalent JVM. We find that both approaches work reliably, but that -- with the contemporary JVM implementation of heap tagging -- the simpler hash map approach has far superior performance.

@inproceedings{Vitasek13, author = {Vit\'{a}sek, Matej and Binder, Walter and Hauswirth, Matthias}, title = {ShadowData: shadowing heap objects in Java}, booktitle = {Proceedings of the 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering}, series = {PASTE '13}, year = {2013}, isbn = {978-1-4503-2128-0}, location = {Seattle, Washington}, pages = {17--24}, numpages = {8}, url = {}, doi = {}, acmid = {2462032}, publisher = {ACM}, address = {New York, NY, USA}, keywords = {Java, dynamic analysis, heap tagging, shadow state}, }