Eclipse Memory Analyzer
… and other Java stuff
Jan Rehwaldt
1. Juli 2013
JVM Tool Interface
PROFILING IN THE JVM
1. Juli 2013 Jan Rehwaldt | Software Profiling 2
JVM Tool Interface
• Comprehensive interface for programming
and monitoring tools (≥ JDK 4; before: JVM PI + DI)
• Allows inspecting state and control execution
of applications run in the JVM
• Support for profiling, debugging, monitoring,
thread analysis, and coverage analysis tools, ...
1. Juli 2013 Jan Rehwaldt | Software Profiling 3
Profiling in the JVM
• JDK tools
– jmap, jinfo, jps, jstack, jconsole, jvisualvm, ...
• Comprehensive Profiling Tools
– VisualVM (free; included with ≥ JDK 6u7; lightwight)
– NetBeans profiler (free; embedded in IDE)
– YourKit (free for open-source projects)
– JProfiler (free for open-source projects)
– JProbe, Spring Insight, ... http://java-source.net/open-source/profilers
1. Juli 2013 Jan Rehwaldt | Software Profiling 6
Profiling in the JVM: VisualVM
1. Juli 2013 Jan Rehwaldt | Software Profiling 7
Profiling in the JVM: VisualVM
Profiling using instrumentation
Package-level restriction
1. Juli 2013 Jan Rehwaldt | Software Profiling 8
Profiling in the JVM: VisualVM
Statistics (JVM, GC, …)
Thread Monitoring
Sampling
Profiling
Tracer (BTrace)
Heap Dump Analysis
1. Juli 2013 Jan Rehwaldt | Software Profiling 9
ECLIPSE MEMORY ANALYZER
1. Juli 2013 Jan Rehwaldt | Software Profiling 10
Eclipse Memory Analyzer
• Show memory structure of Java programs
• Not while runtime, but generally based on
heap dumps
– often post-mortem
– hprof file generated by Oracle JVM (experimental format)
– phd file generated by IBM JVM
• Donated by SAP; Contributed to by IBM
1. Juli 2013 Jan Rehwaldt | Software Profiling 11
Eclipse Memory Analyzer – when?
1. Juli 2013 Jan Rehwaldt | Software Profiling 12
Heap dump
• jmap (included in JDK)
– jmap -dump:format=b <pid>
• Aquire heap dump (inside Eclipse Memory Analyzer; uses jmap)
• On OutOfMemory (flag: -XX:+HeapDumpOnOutOfMemoryError)
• On [Ctrl]+[Break] (flag: -XX:+HeapDumpOnCtrlBreak; ≥ JDK 5u7)
1. Juli 2013 Jan Rehwaldt | Software Profiling 13
Eclipse Memory Analyzer – when?
• Helps:
– Find memory wasting datastructures
– Indicate misuse of Java datatypes
– Find memory leaks
– Improve code by checking impacts of refactorings
by comparing heap dumps
– Understand memory consumption of code
1. Juli 2013 Jan Rehwaldt | Software Profiling 14
Eclipse Memory Analyzer – when not?
• Does not help:
– Threading issues, wrong / missing variable
assignments and other debuggable problems: No
debugging or stepping
– Where has an object been created?
– Analyze JVM‘s memory footprint.
1. Juli 2013 Jan Rehwaldt | Software Profiling 15
Demo: MAT Roundtrip
#ID Sex Culture Forename Surname Address …
1 M Unk Jan Rehwaldt Pusemukkel 4 …
2 M Eng James Albright …
3 F Rus Svetlana Dyakonova Newski Prospekt 106 …
4 M Est Epp Sibul Uus 20 …
5 F Rus Sveta D. Newskoi P. 106 …
6 Usa Mr. Nobel Prize NSA Headquarter …
7 J Usa Mr. Obama The White House …
8 Eng Jamie Albritt Unknown …
9 M Por Sebastian Serano Rosa Carreras …
10 F Por Ana Abílio Heaven 9 …
11 F Ger Jahn Rehfeld Pusem. 4a …
12 F Eng Rita Brown Trafalgar Square 13 …
13 M Unk AddressJanukowitz
Mirko Deduplication
Kirsi 6 …
… … … … … … …
1Mio. F Ukr Susanne Mirkowitsch Dom Spasibo ul.
1. Juli 2013 Jan Rehwaldt | Software Profiling 16
Demo: MAT Roundtrip
#ID Sex Culture Forename Surname Address …
1 M Unk Jan Rehwaldt Pusemukkel 4 …
2 M Eng James Albright …
3 F Rus Svetlana Dyakonova Newski Prospekt 106 …
4 M Est Epp Sibul Uus 20 …
5 F Rus Sveta D. Newskoi P. 106 …
6 Usa Mr. Nobel Prize NSA Headquarter …
7 J Usa Mr. Obama The White House …
8 Eng Jamie Albritt Unknown …
9 M Por Sebastian Serano Rosa Carreras …
10 F Por Ana Abílio Heaven 9 …
11 F Ger Jahn Rehfeld Pusem. 4a …
12 F Eng Rita Brown Trafalgar Square 13 …
13 M Unk Grouping
Mirko Approach
Janukowitz Kirsi 6 …
… … … … … … …
1Mio. F Ukr Susanne Mirkowitsch Dom Spasibo ul.
1. Juli 2013 Jan Rehwaldt | Software Profiling 17
Leak Suspect
1. Juli 2013 Jan Rehwaldt | Software Profiling 18
Dominator Tree
1. Juli 2013 Jan Rehwaldt | Software Profiling 19
Component Report
1. Juli 2013 Jan Rehwaldt | Software Profiling 20
Possible Memory Waste
1. Juli 2013 Jan Rehwaldt | Software Profiling 21
Object Query Language (OQL)
All GroupingPartitions
with a partition filled max. 20%
1. Juli 2013 Jan Rehwaldt | Software Profiling 22
Pros and Cons
• Pros
– Very (most?!) powerful and comprehensive
– Provides hints for memory wastes
• Cons
– Very complicated handling
– A lot of memory required
1. Juli 2013 Jan Rehwaldt | Software Profiling 23
Sources
• http://eclipsesource.com/blogs/2013/01/21/1
0-tips-for-using-the-eclipse-memory-analyzer/
• http://docs.oracle.com/javase/tutorial/java/n
utsandbolts/datatypes.html
• MAT Tutorials & Cheat Sheet
• Trail & Error
1. Juli 2013 Jan Rehwaldt | Software Profiling 24