Detection and Analysis of Memory Anomalies in Managed Languages Using Trace-Based Memory Monitoring

Markus Weninger


Abstract

Even though modern programming languages such as Java employ automatic garbage collection to free programmers from the error-prone task of manual memory management, anomalies such as memory leaks can still occur. Such anomalies can dramatically impact an application's performance and can even lead to crashes. Thus, smart tool support is essential to help developers in understanding the memory behavior of complex software systems. Despite this, most state-of-the-art memory monitoring tools rely on rather limited heap dumps, i.e., they inspect the heap only at a few single points in time. While such approaches may reveal obvious issues, they often do not provide enough details to drill down to the root cause of more complex problems. To tackle this limitation, we propose the use of memory traces, i.e., continuous recordings of memory events such as object allocations or garbage collection operations. Such memory traces enable us to reconstruct detailed information about the monitored application's memory evolution over time. Existing works mainly focus on the (efficient) collection of informationrich memory traces and mostly collect traces for very specific use cases. They often miss discussions of the "big picture", i.e., the flexibility of memory traces and how they can be used for various kinds of memory analyses. This thesis revolves around the question how general-purpose memory traces can be processed and leveraged in memory monitoring tools to improve the (semi-automatic) detection and analysis of memory anomalies. It covers data structures and algorithms for memory trace processing, novel anomaly analysis approaches such as automatic data structure growth analysis, as well as interactive visualization techniques. Furthermore, the thesis investigates how (novice) users approach the task of memory analysis and how memory monitoring tools can be improved to better support and guide these users. All ideas presented in this thesis have been implemented in the memory analysis tool AntTracks to showcase their feasibly and applicability.

Kurzfassung

Moderne Programmiersprachen nutzen automatische Speicherbereinigung, um fehleranfa?llige manuelle Speicherverwaltung zu vermeiden. Dennoch ko?nnen Anomalien wie Speicherlecks auftreten, die sich drastisch auf die Leistung einer Anwendung auswirken und sogar Abstu?rze herbeifu?hren ko?nnen. Es ist daher essentiell, Entwicklern intelligente Werkzeuge an die Hand zu geben, um das Speicherverhalten komplexer Systemen zu untersuchen. Die meisten modernen Speicherwerkzeuge nutzen nur Speicherauszu?ge, d.h. sie inspizieren den Speicher nur zu wenigen bestimmten Zeitpunkten. Solche Ansa?tze ko?nnen zwar oberfla?chliche Probleme aufdecken, bieten aber oft nicht genug Details, um zur Ursache des Problems vorzudringen. Deshalb empfehlen wir die Verwendung von Speicheraufzeichnungen: kontinuierliche Aufnahmen von Speicherereignissen wie Objektallokationen oder Speicherbereinigungsoperationen. Diese erlauben es, detaillierte Information u?ber den Verlauf der Speicherentwicklung zu rekonstruieren. Bestehende Arbeiten fokussieren meist die (effiziente) Sammlung informationsreicher, analysespezifischer Speicheraufzeichnungen, verabsa?umen aber oft die Diskussion des ,,großen Ganzen": die Flexibilita?t solcher Aufzeichnungen und ihre Nutzung fu?r verschiedenste Arten von Speicheranalysen. Diese Arbeit zeigt, wie Speicheraufzeichnungen verarbeitet und genutzt werden ko?nnen, um die (automatische) Problemerkennung und Speicheranalyse zu verbessern. Sie schla?gt Datenstrukturen und Algorithmen zur Aufzeichnungsverarbeitung vor und fu?hrt neuartige Anomalieanalysen (z.B. die automatisierte Analyse des Wachstums von Datenstrukturen) sowie interaktive Visualisierungstechniken ein. Ferner untersucht sie, wie (unerfahrene) Benutzer sich bei der Speicheranalyse verhalten und wieWerkzeuge verbessert werden ko?nnen, um diese Nutzer besser zu unterstu?tzen und anzuleiten. Alle vorgestellten Ideen wurden im Speicheranalysewerkzeug AntTracks umgesetzt, um ihre Machbarkeit und Anwendbarkeit zu pra?sentieren.


PhD thesis, Johannes Kepler University Linz, June 2021

Download as PDF