JDK tools for performance
       diagnostics
       Dror Bereznitsky
     Director of Technologies, AlphaCSP
Introduction


Application to slow ?




  Image courtesy of WTL photos - flickr

                                        ...
Introduction



Leaking
Memory
   ?

  Image courtesy of neoliminal- flickr

                                         3
Intoduction

          Suffering from deadlocks ?




  Image courtesy of hfb - flickr

                                  ...
Introduction




     The JDK has tools that can help you …




Image courtesy of docman - flickr

                       ...
JDK tools for performance diag.

   • JDK tools for performance
     diagnostics:
                   VisualVM            ...
VisualVM




           7
VisualVM

• Java troubleshooting tool
• Visual tool integrating several
  command line JDK tools and much
  more
• For dev...
VisualVM Features


• Display local/remote Java
  applications
• Monitor memory and threads
• Take and browse heap +
  thr...
VisualVM Plugins

 • MBean browser
 • Visual GC
 • Memory sampler
 • Profiler – CPU, Memory
 • BTrace plugin
 • Direct buf...
VisualVM Feature Matrix

                     JDK 1.4.2   JDK 5   JDK 6   JDK 6
                                         L...
Supported VMs

 Java VM        Remarks
 Sun JDK
 Open JDK
 Apple JDK
 Oracle JRockit
 IBM J9         Using JMX only
 HP-UX...
Getting Started


 • Version 1.0 ships with JDK6 since
   update 7
   • Look for jvisualvm in your JDK bin directory
 • Ve...
The Demo Application




                       14
VisualVM Demo




    VisualVM
      Demo

                15
Working With Remote Applications

 • Start a jstatd daemon on the
   remote host
   • Allow remote monitoring tools to att...
Extending VisualVM

What is VisualVM, really?
Generic desktop application
 infrastructure for analyzing sources
 of data.
...
Extending VisualVM

 • Why you would want to extend
   VisualVM:
   • Tool-Centric
     You have a monitoring or managemen...
Extending VisualVM


• What Can You Create?
  • Tabs: Main tabs, Sub tabs
  • Actions: Menu items, Toolbar
    buttons
  •...
Getting Started With Extending VisualVM


• Install JDK 6
• Read VisualVM API Javadoc &
  Tutorials
• Create VisualVM modu...
VisualVM Usage Scenarios

 • General health monitoring
 • Diagnose specific problems
   • Memory leaks
   • Deadlocks
   •...
BTrace




         22
BTrace

 • Dynamic tracing tool for the Java
   platform
 • Safe – read, no write
 • Low-overhead
 • Tracing code is writt...
Dynamic Tracing

 • Works by dynamically
   instrumenting classes of a
   running Java program – using
   ASM 3.0
    • AS...
BTrace HelloWorld Example

 import com.sun.btrace.annotations.*;
 import static com.sun.btrace.BTraceUtils.*;
 @BTrace
 pu...
BTrace Terminology


 • Probe Point
   • "location" or "event" at which a set of tracing
     statements are executed.
 • ...
BTrace HelloWorld Example

 import com.sun.btrace.annotations.*;
 import static com.sun.btrace.BTraceUtils.*;
 @BTrace
 pu...
Some BTrace Annotations


 • @OnMethod
   • Specify target class(es), target
     method(s) and "location(s)" within the
 ...
BTrace Restrictions



 • can not create new objects.
 • can not create new arrays.
 • can not throw exceptions.
 • can no...
com.sun.btrace.BTraceUtils


 • Contains 270 public static methods
   which may be called from a
   BTrace script
 • Many ...
Getting Started

 • BTrace is available as a VisualVM
   plugin
 • Requires VisualVM 1.0.1+
 • Available at the BTrace plu...
BTrace Demo




              Demo


                     32
BTrace Demo Source


@BTrace
public class SizeOfStatusCache {
    @OnMethod(
          clazz = "com.alphacsp.performance.s...
BTrace Usage Scenarios


 • Fine grained performance
   analysis
 • Runtime profiling and monitoring
 • Collecting statist...
jhat




       jhat



              35
jhat

 • Java Heap Analysis Tool
 • Parses a java heap dump and
   launches a web server
 • Basic web interface for browsi...
jhat Features

 • View all class instances
 • View class classloader
 • View all references to an object
 • View reference...
OQL


• SQL-like query language to query
  Java heap
• Based on JavaScript expression
  language
• Built-in objects and fu...
Getting Started

C:jdk1.6.0_13bin>jhat -J-mx512m c:heapdump-
  1245057502890.hprof
Reading from c:heapdump-1245057502890.h...
jhat demo




            jhat Demo

                        40
jhat Usage Scenarios

 • When analyzing large heap
   dumps – can use a remote
   powerful server
 • When you do not have ...
Summary




          Summary


                    42
Summary

 • The JDK contains useful
   performance diagnostics tools
 • These tools can be used for
   detecting, analyzin...
References

 • Monitoring and Troubleshooting Java
   applications using JDK tools (PDF)
 • VisualVM
 • VisualVM Sample Co...
Thank You 



              45
Upcoming SlideShare
Loading in...5
×

JDK Tools For Performance Diagnostics

6,718

Published on

Did you know your JDK contains visual monitoring tools with features like: Profiler, Visual GC, Heap dump browsing and much more?
VisualVM, BTrace and jhat are just some examples for useful performance diagnostics tools hidden in your JDK.
Join us for this session to see what tools are out there and how you can use them to identify and solve performance related issues.

Published in: Technology
1 Comment
15 Likes
Statistics
Notes
  • Check on how to use visual vm through ssh proxy in production systems http://webspherehelp.blogspot.com/2009/07/visualvm-remote-application-monitoring.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
6,718
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
377
Comments
1
Likes
15
Embeds 0
No embeds

No notes for slide

JDK Tools For Performance Diagnostics

  1. 1. JDK tools for performance diagnostics Dror Bereznitsky Director of Technologies, AlphaCSP
  2. 2. Introduction Application to slow ? Image courtesy of WTL photos - flickr 2
  3. 3. Introduction Leaking Memory ? Image courtesy of neoliminal- flickr 3
  4. 4. Intoduction Suffering from deadlocks ? Image courtesy of hfb - flickr 4
  5. 5. Introduction The JDK has tools that can help you … Image courtesy of docman - flickr 5
  6. 6. JDK tools for performance diag. • JDK tools for performance diagnostics:  VisualVM  jconsole  BTrace  jstat  jhat  jinfo  jps  jmap  jstack Image courtesy of dodgechallenger1 - flickr 6
  7. 7. VisualVM 7
  8. 8. VisualVM • Java troubleshooting tool • Visual tool integrating several command line JDK tools and much more • For development and production time 8
  9. 9. VisualVM Features • Display local/remote Java applications • Monitor memory and threads • Take and browse heap + thread dumps • Extensible with plugins • Attach API or JMX 9
  10. 10. VisualVM Plugins • MBean browser • Visual GC • Memory sampler • Profiler – CPU, Memory • BTrace plugin • Direct buffers monitor (JDK 7) • Many more … 10
  11. 11. VisualVM Feature Matrix JDK 1.4.2 JDK 5 JDK 6 JDK 6 Local Remote Overview     System properties  Monitor     Threads    Profiler  Thread Dump  Heap Dump  Heam Dump OOME  MBean Browser    JConsole plugins    11
  12. 12. Supported VMs Java VM Remarks Sun JDK Open JDK Apple JDK Oracle JRockit IBM J9 Using JMX only HP-UX JDK SAP JDK Requires the VisualVM Extensions plugin 12
  13. 13. Getting Started • Version 1.0 ships with JDK6 since update 7 • Look for jvisualvm in your JDK bin directory • Version 1.1.1 now ships with JDK6 update 14 • Latest version can be downloaded from https://visualvm.dev.java.net 13
  14. 14. The Demo Application 14
  15. 15. VisualVM Demo VisualVM Demo 15
  16. 16. Working With Remote Applications • Start a jstatd daemon on the remote host • Allow remote monitoring tools to attach to running JVMs • May have security implications • Add the remote host to the ‘Remote’ node in the Applications window 16
  17. 17. Extending VisualVM What is VisualVM, really? Generic desktop application infrastructure for analyzing sources of data. Default data sources • Applications • Hosts • Dumps • Snapshots 17
  18. 18. Extending VisualVM • Why you would want to extend VisualVM: • Tool-Centric You have a monitoring or management tool that you want to make available to VisualVM • BTrace plugin • Application-Centric You have an application with specific monitoring/management needs • Glassfish plugin 18
  19. 19. Extending VisualVM • What Can You Create? • Tabs: Main tabs, Sub tabs • Actions: Menu items, Toolbar buttons • Application Types • Data Sources 19
  20. 20. Getting Started With Extending VisualVM • Install JDK 6 • Read VisualVM API Javadoc & Tutorials • Create VisualVM modules • Netbeans IDE • VisualVM samples collection 20
  21. 21. VisualVM Usage Scenarios • General health monitoring • Diagnose specific problems • Memory leaks • Deadlocks • Excessive use of finalizers • Hot lock contention • Hung process 21
  22. 22. BTrace 22
  23. 23. BTrace • Dynamic tracing tool for the Java platform • Safe – read, no write • Low-overhead • Tracing code is written in Java • Available as a VisualVM plugin or as a command line tool 23
  24. 24. Dynamic Tracing • Works by dynamically instrumenting classes of a running Java program – using ASM 3.0 • ASM is an all purpose Java bytecode manipulation and analysis framework • Inserts tracing actions by hot- swapping the traced program classes 24
  25. 25. BTrace HelloWorld Example import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; @BTrace public class HelloWorld { @OnMethod( clazz="java.lang.Thread", method="start" ) public static void func() { println("about to start a thread!"); } } 25
  26. 26. BTrace Terminology • Probe Point • "location" or "event" at which a set of tracing statements are executed. • Trace Actions/Actions • Trace statements that are executed whenever a probe "fires". • Action Methods • Trace statements that are executed when a probe fires • defined inside a static method • Such methods are called "action" methods. 26
  27. 27. BTrace HelloWorld Example import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; @BTrace public class HelloWorld { @OnMethod( clazz="java.lang.Thread", method="start" Probe Point ) public static void func() { println("about to start a thread!"); Action Method } } 27
  28. 28. Some BTrace Annotations • @OnMethod • Specify target class(es), target method(s) and "location(s)" within the method(s) • @OnLowMemory • Trace memory threshold exceed event • @OnTimer • Specify tracing actions that have to run periodically once every N milliseconds 28
  29. 29. BTrace Restrictions • can not create new objects. • can not create new arrays. • can not throw exceptions. • can not catch exceptions. • can not have loops (for, while, do..while) • Almost everything is restricted … 29
  30. 30. com.sun.btrace.BTraceUtils • Contains 270 public static methods which may be called from a BTrace script • Many useful methods: • deadlocks - prints the Java level deadlocks detected (if any) • dumpHeap - dump the snapshot of the Java heap • jstack - Prints the java stack trace of the current thread 30
  31. 31. Getting Started • BTrace is available as a VisualVM plugin • Requires VisualVM 1.0.1+ • Available at the BTrace plugin center - https://btrace.dev.java.net/uc/updates.xml 31
  32. 32. BTrace Demo Demo 32
  33. 33. BTrace Demo Source @BTrace public class SizeOfStatusCache { @OnMethod( clazz = "com.alphacsp.performance.seminar.twitter.Main", method = "pollForNewStatuses", location = @Location(Kind.RETURN)) public static void onNewStatuses(Object obj) { List statusCache = (List) get(field(classOf(obj), "statusCache", true), obj); println(concat("Number of cached statuses: ", str(size(statusCache)))); } } 33
  34. 34. BTrace Usage Scenarios • Fine grained performance analysis • Runtime profiling and monitoring • Collecting statistics • When no graphic user interface available 34
  35. 35. jhat jhat 35
  36. 36. jhat • Java Heap Analysis Tool • Parses a java heap dump and launches a web server • Basic web interface for browsing the heap dump • Useful for analyzing memory leaks 36
  37. 37. jhat Features • View all class instances • View class classloader • View all references to an object • View reference chains from Rootset • Use OQL (Object Query Language) to query heap dumps 37
  38. 38. OQL • SQL-like query language to query Java heap • Based on JavaScript expression language • Built-in objects and functions • OQL help is available from the jhat OQL screen 38
  39. 39. Getting Started C:jdk1.6.0_13bin>jhat -J-mx512m c:heapdump- 1245057502890.hprof Reading from c:heapdump-1245057502890.hprof... Dump file created Mon Jun 15 12:18:22 IDT 2009 Snapshot read, resolving... Resolving 120908 objects... Chasing references, expect 24 dots........................ Eliminating duplicate references........................ Snapshot resolved. Started HTTP server on port 7000 Server is ready. 39
  40. 40. jhat demo jhat Demo 40
  41. 41. jhat Usage Scenarios • When analyzing large heap dumps – can use a remote powerful server • When you do not have a graphic user interface • If you want to perform smart queries on heap content 41
  42. 42. Summary Summary 42
  43. 43. Summary • The JDK contains useful performance diagnostics tools • These tools can be used for detecting, analyzing and solving performance related issues 43
  44. 44. References • Monitoring and Troubleshooting Java applications using JDK tools (PDF) • VisualVM • VisualVM Sample Collection • TS-4247 Getting More Out of the Java VisualVM Tool (PDF) • btrace • ASM • jhat 44
  45. 45. Thank You  45
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×