SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Monitoring und Profiling von Java-Anwendungen
von Rolf Kulemann
1. Wieso Profiling bzw. Monitoring?
1. Monitoring
2. Profiling
3. Abgrenzung Monitoring zu Profiling
2. (Basis)Werkzeuge des JDK
1. jps
2. jstat
3. jstatd
Inhalt
01.02.2011 | NEO BUSINESS PARTNERS GmbH
3. jstatd
3. Exkurs: Java Management Extensions (JMX)
4. Exkurs: Java Heaps
5. Exkurs: Garbage Collection
6. Monitoring mit jconsole
7. Profiling mit jvisualvm
1. Übersicht Beispiele
2. Profiling CPU
3. Profiling Memory
• Def.: Monitoring ist ein Überbegriff für alle Arten der unmittelbaren
systematischen Erfassung (Protokollierung), Beobachtung oder
Überwachung eines Vorgangs oder Prozesses mittels technischer Hilfsmittel
oder anderer Beobachtungssysteme. Dabei ist die wiederholende
Durchführung ein zentrales Element der jeweiligen
Untersuchungsprogramme, um anhand von Ergebnisvergleichen
Schlussfolgerungen ziehen zu können.
• Die Funktion des Monitorings besteht darin, bei einem beobachteten Ablauf
bzw. Prozess steuernd einzugreifen, sofern dieser nicht den gewünschten
1. Wieso Profiling und Monitoring?
Monitoring
01.02.2011 | NEO BUSINESS PARTNERS GmbH
bzw. Prozess steuernd einzugreifen, sofern dieser nicht den gewünschten
Verlauf nimmt bzw. bestimmte Schwellwerte unter- bzw. überschritten sind.
Monitoring ist deshalb ein Sondertyp des Protokollierens.
• Def.: Als Profiler werden Programmierwerkzeuge bezeichnet, die das
Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche
Problembereiche in der Softwareentwicklung, die durch ineffiziente
Programmierung ausgelöst werden.
• Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von laufenden
Programmen die Problembereiche aufzudecken. Daraus kann man
Maßnahmen zur strukturellen und algorithmischen Verbesserung des
Quellcodes ableiten.
• Profiler können bei einer API Analyse zwecks re-engineering sehr behilflich
1. Wieso Profiling und Monitoring?
Profiling
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Profiler können bei einer API Analyse zwecks re-engineering sehr behilflich
sein, wenn kein Quellcode vorliegt
• Laufzeit oder Speicherprobleme ohne Profiler zu analysieren ist sehr
zeitaufwendig und mühsam. I.d.R. wird umständlicher problemspezifisches
Logging in die Software eingehführt…
• Java Profiler arbeiten i.d.R. mit reversibler Code Instrumentierung zur
Laufzeit
• Monitoring wird zur Überwachung und Steuerung eingesetzt
• Mit Monitoring ist es möglich grundsätzlich mögliche Probleme im
Laufzeitverhalten festzustellen -> Anwendung benötigt viel Speicher oder ist
langsam
• Mit Profiling analysiert man durch Benutzer oder Monitoring festgestellte
Probleme im Detail -> Speichernutzung und Performance und leitet
Maßnahmen zur Behebung ab
• D.h. Monitoring trägt der Erkenntnis bei und Profiling der Problembehebung
1. Wieso Profiling und Monitoring?
Abgrenzung Monitoring zu Profiling
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Siehe http://java.sun.com/performance/jvmstat/
• Auszug: JVM Process Status Tool - Lists instrumented HotSpot Java virtual
machines on a target system. (formerly jvmps)
2. (Basis)Werkzeuge des JDK
jps
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Wird auch von jconsole und jvisualvm genutzt
• Kurz: Listet Java VM Prozesse
• Nützlich: Bedingt
• Siehe http://java.sun.com/performance/jvmstat/
• Auszug: JVM Statistics Monitoring Tool - Attaches to an instrumented
HotSpot Java virtual machine and collects and logs performance statistics as
specified by the command line options. (formerly jvmstat)
(Basis)Werkzeuge des JDK
jstat
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Kurz: Kommandozeilen Monitoring
• Nützlich: Bedingt, da schwierig zu bedienen. Sehr viele Aufrufvariationen. Ist
sicher ein Expertentool und nicht für den täglichen Gebrauch geeignet
• Besser man nutz jconsole/jvsualvm als Frontend
• Siehe http://java.sun.com/performance/jvmstat/
• Auszug: JVM jstat Daemon - Launches an RMI server application that
monitors for the creation and termination of instrumented HotSpot Java
virtual machines and provides a interface to allow remote monitoring tools to
attach to Java virtual machines running on the local system. (formerly
perfagent)
• Kurz: Muss auf Zielrechner gestartet sein, wenn man jstat remote auf eine
VM anwenden möchte
(Basis)Werkzeuge des JDK
jstatd
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Erwähnenswert, da Monitoring auch Steuerung betrifft
• Java Management Extensions (JMX) ist eine vom Java Community Process
(JSR-3) entwickelte Spezifikation zur Verwaltung und Überwachung von
Java-Anwendungen
• Vergleiche SNMP
• D.h. es können über die JMX API Management Extensions (MBeans)
entwickelt und in einer VM (MBeanServer) bereitgestellt werden
• Entsprechende Tools können die Management Extensions, welche von einer
3. Exkurs: Java Management Extensions (JMX)
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Entsprechende Tools können die Management Extensions, welche von einer
VM exponiert werden, listen und aufrufen
• Standard VM/JDK stellt schon viele Extensions bereit, welche Grundlage von
Werkzeugen wie jconsole und jvisualvm sind
• Beispiel folgt
• Eden Space (heap): pool from which memory is initially allocated for most
objects.
• Survivor Space (heap): pool containing objects that have survived GC of eden
space.
• Tenured Generation (heap): pool containing objects that have existed for
some time in the survivor space.
• Permanent Generation (non-heap): holds all the reflective data of the virtual
machine itself, such as class and method objects. With JVMs that use class
data sharing, this generation is divided into read-only and read-write areas.
4. Exkurs: Java Heaps (Heap or non-Heap?)
01.02.2011 | NEO BUSINESS PARTNERS GmbH
data sharing, this generation is divided into read-only and read-write areas.
• Code Cache (non-heap): HotSpot JVM also includes a "code cache" containing
memory used for compilation and storage of native code.
• Siehe auch
http://java.sun.com/j2se/reference/whitepapers/memorymanagement_wh
itepaper.pdf
• Garbage Collection (GC) ist CPU intensiv
• Teilweise reagiert Anwendung nicht, wenn GC aktiv
• VM Parameter um Garbage Collector Verhalten zu steuern
• Z.B. -XX:+UseParallelGC -XX:ParallelGCThreads=4
• Parallele GC Threads empfohlen bei Muli Core CPUs. VM läuft meist nur in
einer CPU (kein natives threading)
• Garbage Collection wird von der VM möglichst hinausgezögert ->
Performance
5. Exkurs: Garbage Collection
01.02.2011 | NEO BUSINESS PARTNERS GmbH
Performance
• Selektion des Kollektors
• –XX:+UseSerialGC
• –XX:+UseParallelGC
• –XX:+UseParallelOldGC
• –XX:+UseConcMarkSweepGC
• Es gibt also diverse Tuningmöglichkeiten des GCs
• Siehe auch
• http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
• http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html#gddz
t
• jconsole nutz JMX für die Überwachung und Steuerung
• Liest also alle registrierten MBeans und listet deren Daten und Methoden
• MBean stellt Properties (ro/rw) und Methoden bereit
6. Monitoring mit jconsole
JDK_HOME/bin/jconsole
01.02.2011 | NEO BUSINESS PARTNERS GmbH
Startdialog jconsole
• Bietet neben Profiling auch Monitoring wie jconsole
7. Profiling mit jvisualvm
JDK_HOME/bin/jvisualvm
01.02.2011 | NEO BUSINESS PARTNERS GmbH
Das Tuning bzw. die Analyse von Java Programmen erfordert viel Erfahrung und
wissen über potenzielle Poblembereiche
• „Java Performance Tuning“ - O‘Reilly von Jack Shirazi
• „Effective Java“ – Sun von Joshua Bloch
• „Bitter Java“ – Manning von Bruce A. Tate (lustig)
• „Better, Faster, Lighter Java“ – O‘Reilly von Bruce A. Tate und Justin
Gehtland
7. Profiling mit jvisualvm
Literatur
01.02.2011 | NEO BUSINESS PARTNERS GmbH
Gehtland
Diese Titel habe ich vor vielen Jahren gelesen. Es gibt sicher neue Auflagen bzw.
sind die Weisheiten und Fakten in diesen Büchern immer gültig.
Die Vorteile von Profiling bei der Analyse von Speichernutzung und
Laufzeitverhalten werden anhand folgender Beispiele verdeutlicht
• XSLT Verarbeitung: Vergleich von 3 Möglichkeiten der Transformation
• DOM, alle sagen DOM braucht viel Speicher und CPU. Wirklich?
• SAX, ist doch eh viel besser als DOM, oder?
• Stream, die Silberkugel….angeblich gibt es keine
• String Konkatinierung in Schleife
7. Profiling mit jvisualvm
Die Beispiele
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• String, so etwas tut man doch nicht
• StringBuffer, ja genau
• StringBuilder, was ist das?
Motivation:
• Man denkt, was dauert den da so lange
• Kunde sagt die Anwendung bzw. eine bestimmte Funktion ist langsam
• Re-engineering
7. Profiling mit jvisualvm
Profiling CPU
01.02.2011 | NEO BUSINESS PARTNERS GmbH
Motivation:
• Speicherprobleme in Java? Ja, das gibt es
• Stichwort langlebige Objekte in Verbindung mit Caches (statische Maps etc.)
• Manchmal findet man allerdings nicht wirklich einen Programmierfehler oder
einen ineffizienten Algorithmus. D.h. die Anwendung benötigt naturgemäß
viel Speicher
• XML/XSL: SAX oder DOM?
• Tradeoff Performance <->Speicher
7. Profiling mit jvisualvm
Profiling Memory
01.02.2011 | NEO BUSINESS PARTNERS GmbH
• Tradeoff Performance <->Speicher

Mais conteúdo relacionado

Semelhante a Monitoring und Profiling von Java-Anwendungen

OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungNETWAYS
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaPeter Ramm
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenPhillip Oertel
 
Mist gemessen? Java Performance und Memory Analyse
Mist gemessen? Java Performance und Memory Analyse Mist gemessen? Java Performance und Memory Analyse
Mist gemessen? Java Performance und Memory Analyse adesso AG
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Nico Orschel
 
CCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCommunardo GmbH
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performancegedoplan
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10inovex GmbH
 
Robustes Testen mit Selenium
Robustes Testen mit SeleniumRobustes Testen mit Selenium
Robustes Testen mit Seleniumx-celerate
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP UnitsCadaxo GmbH
 

Semelhante a Monitoring und Profiling von Java-Anwendungen (20)

OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
 
CDI
CDICDI
CDI
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
 
Mist gemessen? Java Performance und Memory Analyse
Mist gemessen? Java Performance und Memory Analyse Mist gemessen? Java Performance und Memory Analyse
Mist gemessen? Java Performance und Memory Analyse
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
CCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18n
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performance
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Arquillian
ArquillianArquillian
Arquillian
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
AOP mit PostSharp
AOP mit PostSharpAOP mit PostSharp
AOP mit PostSharp
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10
 
Robustes Testen mit Selenium
Robustes Testen mit SeleniumRobustes Testen mit Selenium
Robustes Testen mit Selenium
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 

Monitoring und Profiling von Java-Anwendungen

  • 1. Monitoring und Profiling von Java-Anwendungen von Rolf Kulemann
  • 2. 1. Wieso Profiling bzw. Monitoring? 1. Monitoring 2. Profiling 3. Abgrenzung Monitoring zu Profiling 2. (Basis)Werkzeuge des JDK 1. jps 2. jstat 3. jstatd Inhalt 01.02.2011 | NEO BUSINESS PARTNERS GmbH 3. jstatd 3. Exkurs: Java Management Extensions (JMX) 4. Exkurs: Java Heaps 5. Exkurs: Garbage Collection 6. Monitoring mit jconsole 7. Profiling mit jvisualvm 1. Übersicht Beispiele 2. Profiling CPU 3. Profiling Memory
  • 3. • Def.: Monitoring ist ein Überbegriff für alle Arten der unmittelbaren systematischen Erfassung (Protokollierung), Beobachtung oder Überwachung eines Vorgangs oder Prozesses mittels technischer Hilfsmittel oder anderer Beobachtungssysteme. Dabei ist die wiederholende Durchführung ein zentrales Element der jeweiligen Untersuchungsprogramme, um anhand von Ergebnisvergleichen Schlussfolgerungen ziehen zu können. • Die Funktion des Monitorings besteht darin, bei einem beobachteten Ablauf bzw. Prozess steuernd einzugreifen, sofern dieser nicht den gewünschten 1. Wieso Profiling und Monitoring? Monitoring 01.02.2011 | NEO BUSINESS PARTNERS GmbH bzw. Prozess steuernd einzugreifen, sofern dieser nicht den gewünschten Verlauf nimmt bzw. bestimmte Schwellwerte unter- bzw. überschritten sind. Monitoring ist deshalb ein Sondertyp des Protokollierens.
  • 4. • Def.: Als Profiler werden Programmierwerkzeuge bezeichnet, die das Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche Problembereiche in der Softwareentwicklung, die durch ineffiziente Programmierung ausgelöst werden. • Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von laufenden Programmen die Problembereiche aufzudecken. Daraus kann man Maßnahmen zur strukturellen und algorithmischen Verbesserung des Quellcodes ableiten. • Profiler können bei einer API Analyse zwecks re-engineering sehr behilflich 1. Wieso Profiling und Monitoring? Profiling 01.02.2011 | NEO BUSINESS PARTNERS GmbH • Profiler können bei einer API Analyse zwecks re-engineering sehr behilflich sein, wenn kein Quellcode vorliegt • Laufzeit oder Speicherprobleme ohne Profiler zu analysieren ist sehr zeitaufwendig und mühsam. I.d.R. wird umständlicher problemspezifisches Logging in die Software eingehführt… • Java Profiler arbeiten i.d.R. mit reversibler Code Instrumentierung zur Laufzeit
  • 5. • Monitoring wird zur Überwachung und Steuerung eingesetzt • Mit Monitoring ist es möglich grundsätzlich mögliche Probleme im Laufzeitverhalten festzustellen -> Anwendung benötigt viel Speicher oder ist langsam • Mit Profiling analysiert man durch Benutzer oder Monitoring festgestellte Probleme im Detail -> Speichernutzung und Performance und leitet Maßnahmen zur Behebung ab • D.h. Monitoring trägt der Erkenntnis bei und Profiling der Problembehebung 1. Wieso Profiling und Monitoring? Abgrenzung Monitoring zu Profiling 01.02.2011 | NEO BUSINESS PARTNERS GmbH
  • 6. • Siehe http://java.sun.com/performance/jvmstat/ • Auszug: JVM Process Status Tool - Lists instrumented HotSpot Java virtual machines on a target system. (formerly jvmps) 2. (Basis)Werkzeuge des JDK jps 01.02.2011 | NEO BUSINESS PARTNERS GmbH • Wird auch von jconsole und jvisualvm genutzt • Kurz: Listet Java VM Prozesse • Nützlich: Bedingt
  • 7. • Siehe http://java.sun.com/performance/jvmstat/ • Auszug: JVM Statistics Monitoring Tool - Attaches to an instrumented HotSpot Java virtual machine and collects and logs performance statistics as specified by the command line options. (formerly jvmstat) (Basis)Werkzeuge des JDK jstat 01.02.2011 | NEO BUSINESS PARTNERS GmbH • Kurz: Kommandozeilen Monitoring • Nützlich: Bedingt, da schwierig zu bedienen. Sehr viele Aufrufvariationen. Ist sicher ein Expertentool und nicht für den täglichen Gebrauch geeignet • Besser man nutz jconsole/jvsualvm als Frontend
  • 8. • Siehe http://java.sun.com/performance/jvmstat/ • Auszug: JVM jstat Daemon - Launches an RMI server application that monitors for the creation and termination of instrumented HotSpot Java virtual machines and provides a interface to allow remote monitoring tools to attach to Java virtual machines running on the local system. (formerly perfagent) • Kurz: Muss auf Zielrechner gestartet sein, wenn man jstat remote auf eine VM anwenden möchte (Basis)Werkzeuge des JDK jstatd 01.02.2011 | NEO BUSINESS PARTNERS GmbH
  • 9. • Erwähnenswert, da Monitoring auch Steuerung betrifft • Java Management Extensions (JMX) ist eine vom Java Community Process (JSR-3) entwickelte Spezifikation zur Verwaltung und Überwachung von Java-Anwendungen • Vergleiche SNMP • D.h. es können über die JMX API Management Extensions (MBeans) entwickelt und in einer VM (MBeanServer) bereitgestellt werden • Entsprechende Tools können die Management Extensions, welche von einer 3. Exkurs: Java Management Extensions (JMX) 01.02.2011 | NEO BUSINESS PARTNERS GmbH • Entsprechende Tools können die Management Extensions, welche von einer VM exponiert werden, listen und aufrufen • Standard VM/JDK stellt schon viele Extensions bereit, welche Grundlage von Werkzeugen wie jconsole und jvisualvm sind • Beispiel folgt
  • 10. • Eden Space (heap): pool from which memory is initially allocated for most objects. • Survivor Space (heap): pool containing objects that have survived GC of eden space. • Tenured Generation (heap): pool containing objects that have existed for some time in the survivor space. • Permanent Generation (non-heap): holds all the reflective data of the virtual machine itself, such as class and method objects. With JVMs that use class data sharing, this generation is divided into read-only and read-write areas. 4. Exkurs: Java Heaps (Heap or non-Heap?) 01.02.2011 | NEO BUSINESS PARTNERS GmbH data sharing, this generation is divided into read-only and read-write areas. • Code Cache (non-heap): HotSpot JVM also includes a "code cache" containing memory used for compilation and storage of native code. • Siehe auch http://java.sun.com/j2se/reference/whitepapers/memorymanagement_wh itepaper.pdf
  • 11. • Garbage Collection (GC) ist CPU intensiv • Teilweise reagiert Anwendung nicht, wenn GC aktiv • VM Parameter um Garbage Collector Verhalten zu steuern • Z.B. -XX:+UseParallelGC -XX:ParallelGCThreads=4 • Parallele GC Threads empfohlen bei Muli Core CPUs. VM läuft meist nur in einer CPU (kein natives threading) • Garbage Collection wird von der VM möglichst hinausgezögert -> Performance 5. Exkurs: Garbage Collection 01.02.2011 | NEO BUSINESS PARTNERS GmbH Performance • Selektion des Kollektors • –XX:+UseSerialGC • –XX:+UseParallelGC • –XX:+UseParallelOldGC • –XX:+UseConcMarkSweepGC • Es gibt also diverse Tuningmöglichkeiten des GCs • Siehe auch • http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html • http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html#gddz t
  • 12. • jconsole nutz JMX für die Überwachung und Steuerung • Liest also alle registrierten MBeans und listet deren Daten und Methoden • MBean stellt Properties (ro/rw) und Methoden bereit 6. Monitoring mit jconsole JDK_HOME/bin/jconsole 01.02.2011 | NEO BUSINESS PARTNERS GmbH Startdialog jconsole
  • 13. • Bietet neben Profiling auch Monitoring wie jconsole 7. Profiling mit jvisualvm JDK_HOME/bin/jvisualvm 01.02.2011 | NEO BUSINESS PARTNERS GmbH
  • 14. Das Tuning bzw. die Analyse von Java Programmen erfordert viel Erfahrung und wissen über potenzielle Poblembereiche • „Java Performance Tuning“ - O‘Reilly von Jack Shirazi • „Effective Java“ – Sun von Joshua Bloch • „Bitter Java“ – Manning von Bruce A. Tate (lustig) • „Better, Faster, Lighter Java“ – O‘Reilly von Bruce A. Tate und Justin Gehtland 7. Profiling mit jvisualvm Literatur 01.02.2011 | NEO BUSINESS PARTNERS GmbH Gehtland Diese Titel habe ich vor vielen Jahren gelesen. Es gibt sicher neue Auflagen bzw. sind die Weisheiten und Fakten in diesen Büchern immer gültig.
  • 15. Die Vorteile von Profiling bei der Analyse von Speichernutzung und Laufzeitverhalten werden anhand folgender Beispiele verdeutlicht • XSLT Verarbeitung: Vergleich von 3 Möglichkeiten der Transformation • DOM, alle sagen DOM braucht viel Speicher und CPU. Wirklich? • SAX, ist doch eh viel besser als DOM, oder? • Stream, die Silberkugel….angeblich gibt es keine • String Konkatinierung in Schleife 7. Profiling mit jvisualvm Die Beispiele 01.02.2011 | NEO BUSINESS PARTNERS GmbH • String, so etwas tut man doch nicht • StringBuffer, ja genau • StringBuilder, was ist das?
  • 16. Motivation: • Man denkt, was dauert den da so lange • Kunde sagt die Anwendung bzw. eine bestimmte Funktion ist langsam • Re-engineering 7. Profiling mit jvisualvm Profiling CPU 01.02.2011 | NEO BUSINESS PARTNERS GmbH
  • 17. Motivation: • Speicherprobleme in Java? Ja, das gibt es • Stichwort langlebige Objekte in Verbindung mit Caches (statische Maps etc.) • Manchmal findet man allerdings nicht wirklich einen Programmierfehler oder einen ineffizienten Algorithmus. D.h. die Anwendung benötigt naturgemäß viel Speicher • XML/XSL: SAX oder DOM? • Tradeoff Performance <->Speicher 7. Profiling mit jvisualvm Profiling Memory 01.02.2011 | NEO BUSINESS PARTNERS GmbH • Tradeoff Performance <->Speicher