Most Java performance measurement tools have too much overhead to use in production. Zing® Vision is different. It’s designed for production use and has little performance overhead. Zing Vision gives you insight into your running Java application and the Zing JVM without any separate installation or configuration. Zing Vision includes (download a pdf of the datasheet here):

Java Method and Native Function Profiling

Zing Vision’s Java method and native function profiling quickly identifies the ‘hot’ methods, the ones consuming the most CPU time. Unlike other tools, Zing Vision does not require you to know ahead of time which code might contain the hot methods and does not use byte code instrumentation. A sampling tick profiler in the Zing VM collects the data. Zing Vision displays the aggregated profile information to show you where work is done in your application. You can also quickly drill down to the instruction level to look at details of the method’s execution. Zing Vision also includes a call graph to show how the application arrived at the hot method.

The tick profiler is always on. It has very low overhead and collects data even when you’re not looking at the generated metrics. Therefore, you can connect anytime and see the latest state of the process.

Zing Vision Tick Profiler Showing the Hot Methods in the Java Process
Click image to zoom

Zing Vision Tick Profile Screen

Thread-level Views

Most tools can only gather thread-level information after all the threads have been brought to a safepoint. This can create substantial performance overhead in a running, production application because not all threads will come to a safepoint simultaneously. When they don’t, the threads that could have been doing work are stalled until all threads come to a safepoint. Zing Vision gathers information for each thread individually without requiring that all come to a safepoint. No thread has to wait for the others to stop, so it’s able to gather data with much lower performance overhead.

Zing Vision’s thread-level view provides useful information such as:

  • What threads are executing in the application (including JVM housekeeping threads)
  • The stack trace and profile for a thread
  • What the threads are doing, including execution call stack snapshots and thread performance profiling
  • Where the application is stalled waiting for locks, including the method with the contended lock and the call path to each method with contention for that lock

Zing Vision Thread View
Click image to zoom

Thread View Zing Vision thread object details

Lock Contention Diagnosis

Zing Vision provides monitor locking metrics for the total and max times for lock acquisition and the number of lock acquires that were blocked because of lock contention. Users can drill down on the methods to see the call tree and determine where in the application lock contention is occurring.

Zing Vision Lock Acquisition View
Click image to zoom

Zing Vision Lock Acquisition Time Screen

Garbage Collection Behavior

Zing Vision captures and displays in-depth information about the Zing runtime’s garbage collection and Java heap space use. Users can view garbage collection history that covers the last 50 cycles and a detailed summary of New Generation and Old Generation collections with calculated averages for the metrics. Zing Vision also reports on application threads that were blocked due to inability to create a new object, which often indicates that the heap size was set too small.

Memory Usage Summary Screen
Click image to zoom

Zing Vision Memory Usage Summary Screen

Java Garbage Collection History and Details
Click image to zoom

Java Garbage Collection History and Detail

Java Heap Object Information

The Live Objects tab shows objects in the Old Generation sorted by the object type that is growing most rapidly in size. Zing Vision refers to this object type as the type with the highest velocity. If you observe that the size of the Old Generation is continuously growing the object type with the highest velocity is likely to be the cause. Each object type can be expanded to view the references to that object from other objects in the heap. You can also choose the time interval over which you’d like to make the calculation.

Old Gen Object Velocity
Click image to zoom

Old Gen Object Velocity

ZVRobot

ZVRobot is a monitoring tool that saves Zing Vision “snapshots” that you would see in your browser at time intervals you choose. Each of these snapshots is then available for you to review in a web browser. The information looks just like Zing Vision screens, but drill down is not available.

Zing Vision ships with Zing, Azul’s innovative Java Virtual Machine. To try Zing Vision, request a trial copy of Zing. It requires no changes to your application and is Java SE compliant.

© Azul Systems, Inc. 2016 All rights reserved.