Welcome to the Patty Project.


The "Patty" project is aimed at providing a profiling tool for the Java 1.5.0 and higher Virtual Machines only (depending on backwards compatibility in JVMTI interface ). The difference with other profilers is this project maintains a very high emphasis on targeted profiling and allows users to switch profiling features on and off at runtime.


Current state of the project is beta 1.0. The project has the following features:

  • Analyses method execution and code coverage.
  • Analyzes thread contention.
  • Can instrument and de-instrument classes while your application is running. (Instrumentation per class is used for method execution timing and code coverage analysis to reduce the impact of the profiler on the VM).
  • Reduces further profiling overhead (memory, CPU and contention) by sending all profiling data over a TCP/IP socket to a different computer.
  • Analyzes the heap used by all reachable objects and shows the number of instances and estimated size occupied per class.
  • Shows the number and size of object instances that are reachable from all instances of a particular class.
  • A web based GUI for analyzing profiling data.
  • Easy usage and installation. No preinstrumentation necessary or other preparation steps in a Java build cycle.
  • Full source code available for modifications.
  • Documentation about the project.
  • Garbage collection analysis.
  • Simplicity rules.

Planned future features:

  • Switch profiling features on and off at runtime.
  • A documentation project where profiling is better explained and shows examples how you can maximize your efforts with this product.
  • Persistence of profiling runs in a database, so that data can later be compared for difference/impact analysis.
  • Various graphical charts to assist in the analysis.
  • Standard deviation in method execution, etc.
  • CPU & heap utilisation overall as a regular sampling statistic.
  • In-depth memory heap analysis.
  • In-depth garbage collection analysis.
  • System property collection for profiling run identification and comparison.