http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Leak Analyse
bernd.zuther@comsysto.com !
@Bernd_Z
08.05.2014
Java Memory Model
2
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
JConsole (1)
3
berndzuther@Bernds-MacBook-Pro ~ $ jconsole
JConsole (2)
seit Java Version 1.5!
Applikation zur Überwachung von Java Prozessen via
JMX auf lokalen oder entfernten Systemen!
Überblick:!
aktuellen Speicherbedarf!
Prozessorauslastung!
Threads!
geladene Klassen
4
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
VisualVM (1)
5
http://visualvm.java.net/ berndzuther@Bernds-MacBook-Pro ~ $ jvisualvm
VisualVM (2)
seit Java Version 1.6!
basiert auf NetBeans!
Applikation zur Überwachung lokaler oder entfernter von
Java Prozesse!
Überblick:!
Anzeigen der Konfigurationen und
Umgebungsvariablen!
Profilen einer Anwendung!
Thread-Dumps!
Heap-Dumps
6
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Garbage Collection
7
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Leak (1)
8
public class MyPage extends org.apache.wicket.markup.html.WebPage {!
!
// reachable via Classloader as soon class is loaded!
public static final List STATIC = new ArrayList();!
!
// as long as the Page is used,!
private final List instance = new ArrayList()!
!
// while this method is executed the List is kept reachable,!
// even if it is not used!
private void myMethod(List parameter) {!
// while this method is running, this list is reachable from the stack!
List local = new ArrayList();!
}!
!
}!
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Leak (2)
9
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Heap Dump
10
berndzuther@Bernds-MacBook-Pro ~ $ jps!
16497 AppMain!
16520 Jps!
berndzuther@Bernds-MacBook-Pro ~ $ jmap -dump:live,format=b,file=dump.hprof 16497!
Dumping heap to /Users/berndzuther/dump.hprof ...!
Heap dump file created!
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
JMeter (1)
11
https://jmeter.apache.org/
JMeter (2)
Java Anwendung, um Lasttest und Performance
Messungen zu machen
unterstützt die folgenden Protokolle:
Web - HTTP, HTTPS
SOAP
FTP
Database via JDBC
12
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Analyzer (1)
13
http://www.eclipse.org/mat/
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Analyzer (2)
14
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Analyzer (3)
15
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Memory Analyzer (4)
Speicheranalyse-Werkzeug!
Heap Dump Informationen einzulesen!
in vielfacher Art darzustellen!
Suspect Report!
Dominator Tree!
Object Query Language
16
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Fragen
http://www.mongosoup.de/index.html http://bernd-z http://bernd-
zuther.de/wp-content/uploads/2014/05/Memory-Analyzer-OGL.png uther.de/
wp-content/uploads/2014/05/Memory-Analyzer-OGL.png
Links
Java OutOfMemoryError – Eine Tragödie in sieben Akten

http://bit.ly/1nBsRYG!
OutOfMemoryError: Java Heapdump Analyse – Was tun
wenn die Produktion spinnt

http://bit.ly/1kMjCA2!
Java ist auch eine Insel 

http://bit.ly/1klsRpn
18

Memory leak analyse