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.
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:
-
Locate the ZVision
folder within ZVTools.zip
-
Log in to a host where the ZVision server will run.
-
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>
-
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.
-
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. |
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 |
|
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 |
|
Reserved |
|
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 |
|
Memory Heap |
|
Memory Reserved |
|
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 # |
|
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:
|
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:
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.