Visit Azul.com Support

Using ZVision

Note
As of Azul Platform Prime 23.08.0.0, ZVision and ZVRobot components have been deprecated and are no longer actively developed. While we still support these components, we encourage users to switch to Java Flight Recorder(https://docs.azul.com/prime/Java-Flight-Recorder), as ZVision and ZVRobot are planned for End-of-life with Azul Platform Prime 24.02.0.0 (February 2024).

ZVision and ZVision Robot (ZVRobot) provide Azul Zing Builds of OpenJDK (Zing) process profiling and diagnostics.

Note
The use of ZVision should be taken under careful consideration since access to sensitive performance data should be restricted following company policy and security recommendations.

ZVision Overview

ZVision provides programmers and deployment engineers with information about both a running application and the underlying Zing JVM. It also helps users tune command line options and code to optimize performance using the following capabilities:

  • Complete internal and environment settings inventory

  • Statistical, flat profiling of processor core usage from the thread level to run-time tasks down to the method level

Take two data samples within a period of time (for example, in a 20 sec. interval) to calculate performance counter increments. ZVision requires:

  • JVM host IP address and JVM host ARTA port

    The Azul Run Time Analysis (ARTA) port is the application host port specified with the -XX:ARTAPort command line.

  • ZVision host IP address and ZVision browser listening port

    ZVision is automatically installed on the same machine as JVM when JVM is installed. You can connect a ZVision installed on one machine to a JVM on another machine. The ZVision listening port must be configured.

ZVision is accessible from supported Web browsers with access to the application host running the JVM instance. The supported browsers include:

  • Microsoft® Internet Explorer 6 (or later) on Windows 2000, Windows XP, Windows Vista, or Windows 7

  • Mozilla Firefox 1.0.3 (or later) on all supported operating systems

  • Apple Safari™ 2.0 (or later) for macOS

Statistical Tick Profiler

The statistical tick profiler displays how processor core time is spent between various software execution units (for example, threads, methods, and run-time tasks). The Azul Platform Prime tick profiler differs from other profilers as follows:

  • It is a statistical, flat (not tree-based) profiler. It does not capture every processor core cycle. Instead, for every n processor core cycles, it records where in the JVM the processor core was running (this is the program counter). It then uses this data to build a flat, non-nested profile.

  • The captured data represents a specific time period.

  • It profiles both within and outside the Java code. Most Java profilers use byte code instrumentation for Java code.

  • It does not profile when threads are blocked on locks. To retrieve information on monitors, go to the Monitors window.

The statistical tick profiler is displayed in the Tick profile window accessed from the CPU tab.

Enable or Disable Tick Profiler

The Tick Profiler is enabled and disabled by using the Java command line option, UseTickProfiler. The default value for UseTickProfiler is false, which means the Tick Profiler will not collect profiling information.

  • To enable the Tick Profiler, use -XX:+UseTickProfiler (set to true)

  • To disable the Tick Profiler, use -XX:-UseTickProfiler (default, set to false)

Sorting Tables

Variable size tables can be sorted by column. Click the column head to sort in ascending order. Click the column head again to resort in descending order. Fixed tables (for example, the GC Summary Window) cannot be sorted.

Running ZVision

Before you can use ZVision to view JVM data, you need to familiarize yourself with the specific Zing option, configure the JVM host port and ZVision server.

Zing Command Line Options

Zing command line options listed in the table below are used to configure ZVision to provide profiling and diagnostics information when running a Java application on a Zing application host.

Java Command Option Description

-XX:ARTAPort={off|<port>|any}

Enables ZVision and allows the ZVision server to listen on the specified port of the host where the JVM is running. Valid options include:

  • off – disables ZVision (default).

  • <port> – port number for ZVision to use on the host. The value should be greater than or equal to 1025 and less than or equal to 65535.

  • any – ZVision uses any free port. This setting is useful when starting multiple instances of ZVision for multiple VMs.

Supply a port number or set this option to any to enable ZVision.

The ARTA (Azul Run Time Analysis) port provides internal API communication between ZVision and JVM.

-XX:PrintGCHistory=<number of historical PGC cycle reports>

Set the number of historical PGC cycle reports to save for display in ZVision (default =50).

-XX:GCWarningHistory=<number of historical PGC warnings>

Set the number of historical PGC warnings to save for display in ZVision (default =50).

Configuring the JVM Host Port

To configure ZVision on a JVM application host:

  • Log on to the JVM application host where the Java workload will be run.

  • Add the following Java command line option to your Java application launch command:

    -XX:ARTAPort=<port>

    where:

    <port> is the port ZVision server will use to connect on the JVM. The Azul Real Time Analysis port (ARTA port) provides internal communication between ZVision and the JVM.

Download ZVTools

From Azul Platform Prime 23.07.0.0, ZVTools is not included in the Azul Platform Prime package and must be downloaded separately.

ZVTools distribution can be found here:

https://ftp.azul.com/releases/Zing/ZVision/ZVTools.zip

Configuring the ZVision Server

The ZVision server is found within ZVTools.zip.

The ZVision server does not need to be run on the same host where the application is running, it only requires a network connection to the host where the application is running.

To set up the ZVision server:

  1. Locate the ZVision folder within ZVTools.zip

  2. Log in to a host where the ZVision server will run.

  3. Set the JAVA_HOME variable (or equivalent) so that the Java call points to the parent directory of the JVM software. For example:

    JAVA_HOME=<JVM install location>/<JVM top-level directory>

  4. Copy the contents of ZVision/bin and ZVision/etc to JAVA_HOME/bin/ and JAVA_HOME/etc/ on the host where the ZVision server will run.

  5. Type the following Java command line:

    $JAVA_HOME/bin/zvision -p <port>

    where:

    <port> is port number that is used by a browser to connect to ZVision (default: 8088)

When the ZVision server starts successfully, the port number that is used by the browser to connect to ZVision is displayed on the command line. For example:

 
ZVision server listening on port 8088

Advanced Configuration Options

The ZVision server can be invoked from the command line as follows:

`zvision [options] `

The following command line options are supported:

Command Line Option Description

-h or --help

Display a list of supported command line options

-p PORT, --port=PORT

Specify the port number port number that browsers listen to the ZVision server

-i INTERFACE, --interface=INTERFACE

Specify the network interface that the JVM accepts HTTP connections.

-t ARTA_TIMEOUT, -arta_timeout=ARTA_ TIMEOUT

Specify the timeout interval (in seconds) when communicating with the JVM.

-1 DEBUG_LEVEL—​logging=DEBUG_LEVEL

Specify the debug logging level: debug, info, warning, error, or critical

--document_root=DOCUMENT_ ROOT

Specify the path to static HTML files used by the ZVision server.

Accessing ZVision

To access ZVision:

  1. Start a browser session and enter the URL of the ZVision server:

     
    http://<ZVisionserver>:<port>

    where:

    • <ZVision_server_IP_address> is the host name or IP address of the ZVision server

    • <port> is the ZVision server port number that accepts connections from a Web browser

      For example: http://host123:8088

  2. On successful connection to the ZVision server, the ZVision login window appears.

  3. Enter the following information:

    • ARTA host – JVM server host name or IP address

    • ARTA port – JVM application host port specified with the -XX:ARTAPort command line

A ZVision session window is displayed.

ZVision Interface

The ZVision interface consists of a series of tabbed pages and corresponding windows. Select a tab to access additional windows for a given component.

Overview Tab

Configuration Window

Displays information for all process settings for the JVM.

The following table describes the Configuration window elements.

Element Description

Version

The JVM version.

Command line

The list of classes and command line options used to launch a Java application.

Java Home

The Java Home path.

Class path

The path to the class.

Boot class path

The path to the boot class.

Extensions directories

The directories for extensions.

Endorsed directories

The directories for classes implementing newer versions of endorsed standards.

Library path

The native library path.

Boot library path

The boot library path.

ARTA Version

The version of the instrumentation in the JVM that provides data to the ZVision server.

Open file descriptors

The limit in bytes for open file descriptors for the JVM front end.

Core file size limit

The maximum size in bytes for a core dump file.

Environment Variables Window

The Environment Variables window provides a detailed view of all environmental variables set by the shell that launched the JVM. The Environment Variables window is displayed only if it is enabled in the Features window.

The following table describes the Environment Variables window elements.

Element Description

Name

Name of the environment variable.

Value

Current setting or value for the environment variable.

HotSpot Flags Window

The HotSpot Flags window displays all -XX flags that the JVM uses, their description, and current values. This screen is for advanced diagnostics and is not intended for beginning users. Azul customer support may instruct users to look up flag values in this window.

The following table describes the HotSpot Flags window elements.

Element Description

Type

The type of flag. Possible values are: * Boolean – the flag requires a Boolean value of true (+) or false (-). * Integer or Unsigned Integer – the flag requires an integer value. * String – the flag requires a string.

Name

The name of the flag.

Value

The value configured for the flag.

Description

The description of the flag.

Statistics Window

The Statistics window displays information about running applications.

The following table describes the Statistics window elements:

Element Description

SystemDictionary Stats

Displays the number of Java classes loaded in the JVM.

Thread Count Stats

Displays the number of running threads.

Settings Window

The Settings window provides controls for enabling GC logging, choosing the level of detail logged, and whether the output is sent to standard out or saved to a new or existing file.

The following table describes the Settings window elements.

Element Description

Off

Disables GC logging for this JVM instance. This is the default setting.

Print GC

Enables GC logging with summarized output. Output is equivalent to using the command line option -XX:+PrintGC.

Print GC details

Enables GC logging with detailed output. Output is equivalent to using the command line option -XX:+PrintGCDetails.

Options: File name

Type a file name to send GC log output instead of sending it to standard out. Select the check box and type an existing file name to append the output to the end of an existing file.

Groups Window

This feature is not supported.

Login Window

This feature is not supported.

Features Window

The Features window is displayed to enable user access to certain ZVision features for the currently running JVM.

Note
Enabling user access to any of these features may interfere with the JVM, cause system delays, or expose sensitive information.

The following table describes the Features window elements.

Element Description

Azul Support

Enables user access to Azul Customer Support Options. Use at your risk, as some of these diagnostic features can interfere with the proper functioning of the JVM, or cause the system to crash.

Browse Instance

Enables users to browse a class instance. Turning this feature on could expose sensitive data within the object.

Browse Class

Enables users to browse the static class data. Turning this feature on could expose sensitive data within the object.

Browse Method

Enables users to browse a class method. Turning this feature on could expose sensitive data within the object.

Environment variables

Enables users to view the Environment Variables. Turning this feature on could expose sensitive data.

Stack trace

Enables users to use the Stack Trace window. Turning this feature on could expose sensitive data.

MetaTicks

Enables users to view metaticks. Turning this feature on could interfere with the proper functioning of the VM and cause the system to crash. This tab should ONLY be enabled if advised by Azul Support.

Polling Opportunities

Enables users to view the Polling Opportunities entries. Turning this feature on could interfere with the proper functioning of the VM and cause the system to crash. This tab should ONLY be enabled if advised by Azul Support.

Weblogic Muxer

Enables users to use the Web Logic Muxer Application. Turning this feature on could interfere with the proper functioning of the VM and cause the system to crash. This tab should ONLY be enabled if advised by Azul Support.

Threads Tab

Threads List Window

The Threads List window displays all threads, status of each thread, and links to detailed information about a thread. View and action options include:

  • Refresh this window to view thread progress.

  • Click the Name and State column titles to sort the table.

  • Click the Details link item display the status of a thread and where it is blocked. Refer to Stack Trace Window.

  • Set values in the Name, State, Group, and/or Per page fields to filter the displayed list

The following table describes the Threads List window elements.

Elements Description

Name

Lists the name of the thread as assigned by the application.

State

The most common states for threads are:

  • running – the thread is executing on a processor core.

  • I/O wait – the thread is waiting for socket or file I/O.

  • waiting on monitor – the thread is blocked in java.lang.Object.wait() awaiting notification.

  • low memory detection –

  • acquiring monitor – the thread is waiting to acquire a synchronization monitor.

  • acquiring and releasing monitor – the thread a requires and releases a synchronization monitor. This typically happens when the critical section of the monitor is extremely small.

  • sleeping – the thread executed java.lang.Thread.sleep().

  • Other states, such as idle, semaphore wait, waiting on JVM monitor Threads_lock, or Waiting on Monitor SLT lock indicate threads that are internal to the JVM. These states are not normally useful for analysis of application performance. Also, during start up, compiler threads may be running. The time (in seconds) that the thread has spent since entering the state is provided in parenthesis after the waiting state indicators.

Details

Provides links to a stack trace, tick profile, and object profile for the selected thread. These functions are the same as the regular tick and profile features, except that only information on the selected thread displays. The following links appear inline with threads listed in this window:

  • Stack – displays a thread execution details window. Displays the page Threads > Stack Trace.

  • Ticks – displays a per-thread profile. Displays the page CPU > Tick Profiler.

  • System calls, RPC out, RPC in, FDC, and Transport are not supported at this time.

Stack Trace Window

The Stack Trace window lists all threads and displays whether a thread is executing or is blocked. This can help to determine changes to make in the application code.

To perform a search by thread name, type a string in the Name field to display all thread names that include that text string (case sensitive).

Click the thread links in the Stack Trace window to display a thread execution details window. Use the State drop-down menu to only display threads in a certain state (for example, running, I/O wait, acquiring monitor, and so on). Use the Group drop-down menu to select whether to list system, non-system, or all group types. Use the Per Page drop-down menu to determine the number of items to display on this page.

Toggle between low or high display of detailed information.

Refresh this screen to view the progress of the thread. Relevant information displays at the top of the window:

  • Address

  • Priority

  • Object blocked

  • Object wait

  • CPU wait

  • I/O wait

The Stack Trace window is displayed only if it is enabled in the Features window.

Deadlocks Window

The Deadlocks window lists detected deadlock cycles. Threads involved for each cycle of locks are listed with the monitor type the thread is trying to acquire and the thread that is the current owner. Click the thread links to view additional information.

Contention Window

The Contention window provides statistical information for each monitor and sorts monitors by total acquire time. The following types of monitors appear in the Contention window:

  • Java-level monitors – identified by their class name.

  • Internal JVM monitors – identified with the extension _lock. If there are a high number of internal JVM monitors, examine the verbose garbage collection (GC) logs. Observe if there are a large number of GC pauses. Contact Azul customer support if this becomes a problem.

  • The total acquire time parameter is the time, in milliseconds, for acquires to occur for a given internal or Java-level monitor.

The following table describes the Contention window elements. Click column titles to sort by relevance.

Elements Description

Name

The name of the monitor.

Acquire Time (ms)

  • Total – the time, in milliseconds, for acquires to occur for a given internal or Java-level monitor (not tracked for lightly contended “thin” monitors).

  • Max (ms) – the maximum time, in milliseconds, to perform an acquire.

Blocking acquires

  • Count – the number of blocking acquires.

Waits

  • Count – the number of wait cycles on the thread.

  • Max (ms) – the maximum time, in milliseconds, of wait cycles that are allowed.

  • Total (ms) – Cumulative wait cycle in milliseconds

Contention Details Window

The Contention Detail window provides additional information about the selected monitor in contention. Detail information is displayed through the Azul Support tab.

Note
If Azul Support is enabled, links to related Monitor details are displayed. Only enable and use the Azul Support tab as directed by Azul Support team members.

CPU Tab

The CPU tab provides information about how much CPU time is being used by threads. This is measured by recording the length of time it takes a thread to complete a tick, how often a thread accesses sensitive areas of the application code, and the length of time a thread takes to achieve a safepoint.

Note
Method names in the tick profiler are compiled methods and are no longer being interpreted. All time spent by methods being interpreted is summed as one entry named “Interpreter.”

Check the Tick Profile window for functions such as VM_C2 Compiler or Interpreter after launching an application. If these functions are high on the list, then the application is still starting up (a warning message may also appear in the Compiler tab). To determine if the application is warmed up, wait a few seconds, click Reset Tick Profile, then refresh the Web browser until these two threads are not high in the list.

The following table describes the Tick Profile window elements.

Element Description

Pause/Resume the Tick Collection

Click Pause The Tick Collection to stop refreshing the list of ticks. This is useful when you need to locate a specific item in a rapidly changing list. Click Resume The Tick Collection and refresh the screen to continue updating the list of ticks.

Reset Tick Profile

Clears the existing list of ticks and restarts tick collection.

Cutoff

Filters the list of ticks to list only those values that are greater than or equal to the set cutoff value. Enter value. Click Submit.

Below Cutoff

At the bottom of the list of ticks, it lists the percentage and number of ticks that are not included in the displayed list as defined by the Cutoff percent value and Threads value.

Threads

Display the ticks for only the threads listed in this field. Enter value. Click Submit.

None, JVM, All

The three radio buttons filter the tick data by a tag assigned to it. Whenever a thread is running, it has a current tag assigned to it. That value can change at any time, as the thread does different things. For instance, if you have a thread that is a garbage collection thread, it’s tag might be "garbage collection" most of the time, but when that thread was running some specific subtask of GC, it might say GC marking phase. This feature allows collates and displays the data from the aspect of the tag value instead of the method name.

The options are:

  • None – don’t filter the list by tags.

  • JVM — group all the JVM compiler ticks into one entry, so that everything is lumped together. Useful if you are trying to get a sense of what overhead the compiler is having.

  • All - only display ticks by tag type for all threads. Instead of showing ticks entries by their method name, group and display them by their tag type.

To apply tag filter, click a radio button. Click Submit.

Percent

The percentage of CPU resources (% of the total number of ticks collected during the collection period) the function used during the time interval.

Ticks

The number of program counters (“ticks”) collected in the time interval. This includes:

  • Timer ticks – collect for each tick, the thread ID, CPU, stack trace and last eight calling functions when the tick occurs. The time reported, in milliseconds, is thread time, not clock time.

  • Time to safe point ticks – collect the time required to complete a save point process.

Source

A description of the function being counted. The following are definitions for specific functions:

  • VM_GC Task – the garbage collector for the JVM.

  • ARTA_Performance_Monitor – the function that collects and displays ZVision data.

  • VM_C2 Compiler – the JVM JIT compiler compiling methods indicating that an application is still warming up .

  • generate_monitor enter – the amount of time spent busy-waiting to acquire monitors.

Event Profiling Tick Buffer Statistics

Statistical information about the total list of ticks. This includes:

  • Ticks within a Buffer – number of ticks a standard tick buffer can hold. There is a fixed maximum of 2K.

  • Available Buffers – number of buffers the user has allocated, as determined by the -XX:EventTickBufferDataBufferMargin=N value, plus the high water mark number of active threads. For example, if you specify 100, and the application has 400 threads simultaneously active, then there are 500 available buffers. This total value is dynamic, but only grows. If suddenly the application drops 300 threads, there continues to be 500 buffers.

  • Theoretical Maximum Ticks (Available Buffer * Ticks/Buffer) – per the listed formula, for example using Ticks within a Buffer maximum (2000) X Available Buffers (500) = 1,000,000.

  • Count of Ticks processed – not all buffers are completely filled at any moment in time. The tick buffers are collecting ticks. Some have not been used yet. This value is the count of all ticks that are in buffers, which is some value less than the theoretical maximum.

  • Profiler Ticks applicable (matched filter criteria) – number of ticks that match the search criteria

  • Other Ticks not applicable (Failed filter criteria) – number of ticks that do not match the search criteria. Profiler Ticks and Other Ticks equal the total number of ticks processed.

Meta Ticks Window

Meta Ticks measure how long it takes to perform a function. This is not a measure of each thread. Meta Ticks are like timer ticks in nature. They are a discreet packet of information about the state of a thread, but unlike the Profile Ticks, which are created based on some periodic timer, Meta Ticks are created as the thread enters certain specific code paths.

The following table describes the Meta Ticks window elements.

Element Description

Pause/Resume the Tick Collection

Click Pause The Tick Collection to stop refreshing the list of ticks. This is useful when you need to locate a specific item in a rapidly changing list. Click Resume The Tick Collection and refresh the screen to continue updating the list of ticks.

Reset Tick Profile

Clears the existing list of ticks and restarts tick collection.

Search Criteria:

Single Value Entries

  • Entries Displayed – number of entries displayed on a given page.

  • Tick Start – a search field which determines the earliest tick that is included in the display, based on the elapsed tick counter.

  • Tick End – a search field which determines the latest tick that is

  • included in the display, based on the elapsed tick counter.

Search Criteria:

Comma Separated Lists

These items are all search criteria for metaticks. The five fields in this row can all use comma separated lists as a search criteria. That is, you can search for more than one term simultaneously, by listing those terms with commas separating them. For example, CPU field could contain "2,5,9", which would list all metaticks that came from CPU 2, 5 or 9.

  • MetaTick # – value that can be used for searches. The values are preassigned by Azul.

  • User Info # – value assigned dynamically by the application that can be searched on.

  • Tag # – The current Virtual Machine Process Tag of the thread when the metatick occurred. This is a pre-defined value we assign to a thread that can be changed dynamically, to indicate what kind of work the thread is doing. The values are preassigned by Azul.

  • CPU # – the CPU that the thread was executing on when the metatick occurred.

  • Thread # – thread ID for Azul internal use.

Data Table

List of actual metatick data. See below listed field descriptions.

  • Line item – last 100 meta ticks recorded.

  • Tick Counter – elapsed ticks since startup.

  • Thread ID – thread ID for Azul internal use.

  • CPU – CPU that the thread was executing on when the metatick occurred.

  • MetaTick Type – value for Azul internal use. Value indicates the tag value at the time the tick occurred.

  • MetaTick Type # – string translation of the stored bit value to the metatick type.

  • Tag Name – string human readable translation of the tag number.

  • Tag # – the VM Tag currently assigned when the metatick occurred

  • Stack Frame Address – address of the stack frame at the time the tick occurred.

Event Profiling Tick Buffer Statistics

The following are diagnostics related to capturing tick statistics.

  • Ticks within a Buffer – number of ticks a standard tick buffer can hold. There is a fixed maximum of 2K.

  • Available Buffers – number of buffers the user has allocated, as determined by the -XX:EventTickBufferDataBufferMargin=N value, plus the high water mark number of active threads. For example, if you specify 100, and the application has 400 threads simultaneously active, then there are 500 available buffers. This total value is dynamic, but only grows. If suddenly the application drops 300 threads, there continues to be 500 buffers.

  • Theoretical Maximum Ticks (Available Buffer * Ticks/Buf) – per the listed formula, for example using Ticks within a Buffer maximum (2000) X Available Buffers (500) = 1,000,000.

  • Count of Ticks processed – not all buffers are completely filled at any moment in time. The tick buffers are collecting ticks. Some have not been used yet. This value is the count of all ticks that are in buffers, which is some value less than the theoretical maximum.

  • Profiler Ticks applicable (matched filter criteria) – number of ticks that match the search criteria

  • Other Ticks not applicable (Failed filter criteria) – number of ticks that do not match the search criteria. Profiler Ticks and Other Ticks equal the total number of ticks processed.

Event Tracker This feature is not supported.

Memory Tab

The Memory Summary window provides a summary of total memory usage and Contingency memory usage. The following tables describe the Memory Summary window elements.

Memory Summary Window Elements – Java Heap Usage

Element Description

Used

The amount of memory currently used by the JVM.

Capacity

The amount of memory allocated for use by the JVM.

Requested capacity

The maximum amount of memory requested for use by the JVM (-Xmx).

GC cycle count

The number of garbage collection cycles.

Memory Summary Window Elements – Memory Accounts

Element Description

VM internal

Shows allocated, balance, Reserved, and Contingency memory usage for the JVM

Java heap

Shows allocated, balance, Reserved, and Contingency memory usage for the Java heap.

Java Pause Prevention

Shows allocated, balance, Reserved, and Contingency memory usage for the Java Pause Prevention memory.

GC Summary Window The GC Summary window provides a cumulative summary of the recent GC cycle history. The following table lists the GC Summary window elements. The screen lists the garbage collection information for both New generation and Old generation cycles in two parallel tables.

Element Description

Header

  • Category – element being measured

  • Statistic – aspect of the element being measured

  • Mean – statistical calculation of collected values

  • Stddev – standard deviation calculated for collected values

  • Min – minimum value in collected sample

  • Max – maximum value in collected sample

Cycle

  • Interval (sec) – elapsed time between successive GC cycle starts.

  • Pause ratio – ratio of time application spent in safepoint pauses during the cycle to cycle interval time

Reserved

  • Peak used (MB) – the peak size of the Java heap recorded during the GC cycle

Pause

These values are used for internal Azul Platform Prime diagnostic purposes only.

Generations

  • New used (MB) – the amount of memory used by all young objects not known to be dead during the GC cycle.

  • Old used (MB) – the amount of memory used by all old objects not known to be dead during the GC cycle.

  • Perm used (MB) – the amount of memory used by all permanent objects not known to be dead during the GC cycle.

  • Live (MB) – the live memory in the generation(s) being collected.

  • Fragmentation (MB) – the fragmentation in the generation(s) being collected.

Garbage

  • Found (MB) – the garbage found in the generation(s) being collected.

  • Collected (MB) – the garbage freed in the generation(s) being collected.

  • Sideband limited (MB) – used for internal Azul Platform Prime diagnostics purposes only.

Pages

These values are used for internal Azul Platform Prime diagnostic purposes only.

Pauses

  • Pause 1 duration (ms) – the duration time of the pause 1 safepoint.

  • Pause 2 duration (ms) – the duration of the pause 2 safepoint

  • Pause 3 duration (ms) – the duration of the pause 3 safepoint

  • Pause 4 duration (ms) – the total duration of all pause 4 safepoints for this GC cycle.

Intercycle

  • Duration (sec.) – the elapsed time from the end of the last GC cycle to the start of this GC cycle.

  • Allocation rate (MB/s) – the object allocation rate in the generation being collected in the period between the last GC cycle to the start of this GC cycle.

  • Perm allocation rate (MB/s) – the object allocation rate in the permanent generation during this GC cycle.

Intracycle

  • Duration (sec.) – the GC cycle elapsed time; the duration of time from the beginning to the end of this GC cycle.

  • Allocation rate (MB/s) – the object allocation rate in the generation being collected during this GC cycle.

  • Perm allocation rate (MB/s) – the object allocation rate in the permanent generation during this GC cycle.

App threads

  • Total threads – the total count of Java threads in the JVM.

  • Threads delayed – the number of threads blocked trying to allocate memory during the GC cycle. When the number of delayed threads is greater than 0, application performance is affected due to lack of available memory.

  • Average thread delay (sec) – the average delay for threads blocked trying to allocate during the GC cycle.

  • Max thread delay (sec) – the maximum delay for threads blocked trying to allocate.

GC History Window The GC History window provides a detailed summary of the recent GC cycle history with a row per cycle. Click column titles to sort by relevance.

The following table lists the GC History window elements.

Element Description

Cycle Type

Indicates GC cycle, as follows:

  • Old – old generation cycle

  • New – new generation cycle

  • NTO – new generation cycle that immediately precedes an Old Gen cycle

Cycle #

For each New or Old Gen cycle, the number of that collection in the sequence of all collections of that type (New or Old Gen).

Mode

  • p – indicates if allocation from pause memory is enabled

  • g – indicates if allocation from Contingency memory is enabled.

Memory Heap

  • Max – maximum amount of heap memory guaranteed to the application. This is generally set by Xmx option.

Memory Reserved

  • Peak – the peak size of the Java heap recorded during the GC cycle.

  • Used – the amount of memory used by all objects not known to be dead during the GC cycle.

Memory Pause

These values are used for internal Azul Platform Prime diagnostic purposes only.

Memory Generations

  • New – the amount of memory used by all young objects not known to be dead during the GC cycle.

  • Old – the amount of memory used by all old objects not known to be dead during the GC cycle.

  • Perm – the amount of memory used by all permanent objects not known to be dead during the GC cycle.

  • Live – the live memory in the generation(s) being collected.

  • Frag – the fragmentation in the generation(s) being collected.

Memory Garbage

  • Found – the garbage found in the generation(s) being collected.

  • Freed – the garbage freed in the generation(s) being collected.

  • Sideband limited – used for internal Azul Platform Prime diagnostics purposes only.

Memory Pages

These values are used for internal Azul Platform Prime diagnostic purposes only.

Intercycle

  • Dur (sec.) – the elapsed time from the end of the last GC cycle to the start of this GC cycle.

  • Alloc rate (MB/s) – the object allocation rate in the generation being collected in the period between the last GC cycle to the start of this GC cycle.

  • Perm alloc rate (MB/s) – the object allocation rate in the permanent generation during this GC cycle.

Intracycle

  • Dur (sec.) – the GC cycle elapsed time; the duration of time from the beginning to the end of this GC cycle.

  • Alloc rate (MB/s) – the object allocation rate in the generation being collected during this GC cycle.

  • Perm alloc rate (MB/s) – the object allocation rate in the permanent generation during this GC cycle.

App threads #

  • # – the total count of Java threads in the JVM.

App threads Delay

  • # – the number of threads blocked trying to allocate memory during the GC cycle. When the number of delayed threads is greater than 0, application performance is affected due to lack of available memory.

  • Ave (sec) – the average delay for threads blocked trying to allocate during the GC cycle.

  • Max (sec) – the maximum delay for threads blocked trying to allocate.

Browse Object Window

Do not select this page directly, instead select a highlighted object, instance, method or class.

The following table describes the Browse Object tab window elements.

Element Description

Class Property and Value

If applicable, list of class properties associated with the selected object. Includes values for the listed properties.

Static Fields

If applicable, list of static information associated with the selected object. This includes descriptive information:

  • Access

  • Name

  • Type

  • Value

Methods

If applicable, list of methods associated with the selected object.

Transitive Interfaces

If applicable, list of transitive interfaces associated with the selected object.

Allocated Objects Window

Data collected for allocated objects only when the -XX:ProfileAllocatedObjects option is included in the JVM command. This feature is not supported.

Live Objects Window

The Live Objects window displays a current list of classes in the old generation heap that are being kept alive. Use this information to identify possible memory leaks in your Java application.

Each listed row [with a plus (+)] is a referent class. Expanded rows show a list of referrer classes to the referent class. A class is listed as a referrer, when all the following conditions are met:

  • An object of that class directly points to an object of the referent class.

  • The referent object was seen by the GC through the referrer object.

Only the first referrer seen by the GC is counted. This means that there could be other referrer objects that point to the referent objects, but they are not included.

To display Live Object data, include the -XX:+ProfileLiveObjects option in the JVM command. To view current data, refresh the screen. If a GC has not occurred yet, a message to refresh is displayed.

The following table describes the Live Object tab window elements. Note, all the descriptions are about the old generation heap.

Element Description

Total

Total number of old generation live objects.

Class Name

Name of classes whose objects reside in old generation memory. Click the plus (+) to see referring classes.

Count

The number of objects of this class that are alive in the old generation heap.

Size (bytes)

The total amount of memory used by objects of this class.

Avg Size (bytes)

The average amount of memory used by objects of this class.

Percentage of Live Set

The percentage of the live set memory consumed by object of this class.

For referrer rows this is a percentage of referrer count.

Type Velocity Window

The Type Velocity window displays a current list of classes in the old generation heap and their rate of memory growth. Where velocity for a class is the rate of heap growth in bytes over a selected time interval. Use this information to identify possible memory leaks in your Java application.

To gather Type Velocity data, include the -XX:+ProfileLiveObjects option in the JVM command and allocate extra memory. To view current data, refresh the screen.

All time listings are in format: [dd] hr:min:sec. Number of days are listed only if it is non-zero. Only the top 1000 classes, sorted by Growth Rate, are shown.

The following table describes the Type Velocity tab window elements.

Element Description

Interval

Options in increments ranging: 1 – 45 mins, 1-18 hrs, 1-7 days

Requested time interval

Selected time interval by the user.

Best available match interval

Time interval starting from the last GC cycle that most closely matches the selected interval.

For example, if GC occurred at 10 minutes, 15 minutes, 20 minutes, and 45 minutes from the start of the VM, and the selected interval is 10, then the data from the GC at 20 minutes (interval-start) and 45 minutes (interval-end) are used for calculating the type velocity.

Interval-start

Interval-end

The starting time and ending time of the best available match interval. Time is not clock time. It is time from start of VM.

VM uptime

Amount of time passed since the start of the VM.

Class Name

Name of classes whose objects reside in old generation memory.

Latest Count

The number of objects of this class that are alive at interval-end time.

Latest Size (bytes)

The total amount of memory used by objects of this class that are alive at interval-end time.

Prior Count

The number of objects of this class that are alive at interval-start time.

Prior Size (bytes)

The total amount of memory used by objects of this class that are alive at interval-start time.

Delta Count

The difference between the number of objects of this class that are alive between interval-start and interval-end time.

Delta Size (bytes)

The difference between the memory used by objects of this class between interval-start and interval-end time.

Growth Rate (bytes/min)

The rate of heap growth for a class over Best available match interval.

Growth Rate = Delta Size / Best available match interval.

Compilers Tab The Compiler tab of ZVision displays the status of Server and Client compiler tasks.

The following table describes the Compiler tab window elements.

Element Description

Compiling

Status of threads being compiled.

Waiting

Status of threads waiting to be compiled

Applications Tab The Application tab displays a list of application classes and Java class libraries that are loaded in the JVM. If the Browse Class feature is enabled for a user in the Features tab, the hyperlink for a specific class can be selected to browse the static class data in the Browse Object window.