Profiling Java Applications - Overview

Applies to AQTime 8.81, last modified on January 18, 2022

AQTime can profile Java applications that run on Sun Microsystems Java 1.5 - 1.7 platforms.

To profile Java applications, AQTime uses the features provided by the Java Virtual Machine Tool Interface (JVM TI). The Tool Interface is loaded during initialization of the Java Virtual Machine (JVM) and provides means for inspecting the applications’s state and for controlling the execution flow. AQTime can trace the moment when a Virtual Machine starts and overrides some hooks and event handlers, thus AQTime becomes able to retrieve application data without the necessity to prepare the Java application beforehand.

Supported Profilers

Currently, Java applications can be profiled with the following profilers:

Profiling Instructions

Since Java applications are not executed directly by the operating system, you should launch the Java Virtual Machine and pass the application to it. Therefore, to profile a Java archive, you need to specify the Java application launcher as the host application. For more information on how to do this, see Selecting Target Java Virtual Machine.

Profiled Java applications may be represented in the form of Java archives (.jar) and machine-readable class files (.class). The following topics contain detailed instructions on profiling different types of Java applications:

Important notes:

  • For the best results, it is recommended that you compile your Java application with debug information. The Java compiler (javac.exe) includes debug information in applications by default, however, it can be excluded by using certain compiler settings. For information about compiler settings needed to generate debug information, see Compiler Settings for Java Compiler.

  • Currently, AQTime cannot profile Java code if you attach a profiler to a running Java application. In this case, you will only be able to profile native code called from Java code.

    To profile Java code, you need to start your application along with the profiler from within AQTime. For more information, see Profiling Java Archives and Profiling Java Classes.

When profiling a Java application, AQTime monitors the application execution and displays the events that occur in the application in the Event View panel. AQTime logs Java events (the loading of a Java .class file, Java exceptions, etc.) along with standard events that occur within AQTime (such as the start of profiling, module loading, the end of result generation, etc.). By using the options of the Event View panel, you can filter logged events to view only those that occur in the profiled Java application. You can also use the List of filters for Java exceptions option to specify Java exceptions to be ignored during the profiling session.

Sample Applications

AQTime includes a number of samples that you can use to get started profiling Java applications.

On Windows Vista and later, AQTime samples are located in the <Users>\Public\Documents\AQTime 8 Samples folder. On other operating systems, the samples reside in the <Documents and Settings>\All Users\Documents\AQTime 8 Samples folder.
CoverageSample

Demonstrates how you can use the Coverage profiler to find untested sections of your code.

<AQTime Samples>\Java\Coverage

JuliaSetSample

Demonstrates how you can find and resolve performance bottlenecks in your Java applications.

<AQTime Samples>\Java\JuliaSet

MixedSample

Demonstrates how you can profile native-code routines that are called from managed Java code.

<AQTime Samples>\Java\MixedProfiling

PerformanceSample

Demonstrates how you can use the Performance profiler to time function execution in your application.

<AQTime Samples>\Java\Performance

See Also

Profiling Java Applications
Compiler Settings for Java Compiler
Selecting Target Java Virtual Machine
Profiling Various Applications and Code

Highlight search results