Fully featured low overhead profiler for Java EE and Java SE platforms.
Monitoring and profiling solution for Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

Get Started with YourKit ProjectX

Overview

With this tool you can monitor and profile in runtime the execution of scripts that build and test your software projects.

As the result you get a sequence (actually, a tree) and timings of the framework specific events, such as an Ant task execution or running a unit test.

Currently the events are recorded for:

  • Ant
  • Gradle
  • Maven
  • JUnit tests
  • TestNG tests
  • Threads and processes

This is just for the start: more events will be added in future versions.

You will get a full call tree of the events, including those happened in child processes:

as well as execution overview:

You can monitor execution of Ant, Gradle, Maven projects running:

  • from within your IDE: Eclipse, IntelliJ IDEA, NetBeans
  • from within continuous integration server: Jenkins, Hudson, TeamCity
  • standalone

UI client

The ProjectX UI client allows you to:

  • setup monitoring
  • visualize and analyze obtained runtime information

Agent

To profile execution of your scripts, you need to setup the JVM running your Ant, Gradle, Maven script with the ProjectX agent library.

The integration wizard in the ProjectX UI client helps you in solving this task.

Technically, this involves adding the Java command line option "-agentpath" or "-agentlib" to your script's launcher.


Data storage, repositories

The agent stores obtained information in a file located in the repository directory.

Technically, the agent creates one file per run, i.e. per process. If a monitored process launches a child process, a separate file is created for the child process.

The repository can be opened in the ProjectX UI client for visualization and analysis.

The integration wizard offers you to create a repository. By default, it suggests you to place it under <user home>/.projectx/repositories/<your project name>. You can choose a custom location instead if you wish.

You may have multiple repositories. We recommend to use a dedicated repository for each of your projects, i.e. for each product or product version/branch whose build process you want to monitor. Runs from the same repository can be compared for regression analysis, thus it makes sense to put only "comparable" runs in each repository.


Local and remote repositories. Repository sharing service.

As we wrote, the agent stores obtained information in a repository in the local file system of the process being monitored.

If you monitor a build running on a remote machine, the repository directory will be located on that machine. To transfer the information to your local machine for analysis, you may start on the remote machine the ProjectX repository sharing service. It helps to synchronize files in remote repository with files in local machine's file system. While running, the sharing service listens on a specified port and receives incoming requests from the ProjectX UI clients.

Alternatively, the remote repository files can be transferred manually to a local machine.