You can profile any Java application that runs virtual machines from the following vendors:
- Sun Java 6 and 7
- JRockit 6 (R27.2.0 or newer)
- IBM Java 6 (SR3 or newer)
Profiling is supported on following platforms:
- Windows XP/Server 2003/Vista/Server 2008/7/Server 2008 R2, 32-bit Java (x86) and 64-bit Java (x86-64)
- Linux, 32-bit Java (x86) and 64-bit Java (x86-64)
- Mac OS X 10.4 and newer, Intel, 32-bit and 64-bit Java
- Solaris 9 and newer, SPARC, 32-bit and 64-bit Java
- Solaris 10 and newer, x86, 32-bit and 64-bit Java
- FreeBSD 7 and newer, i386 and amd64 (aka x86-64) with Diablo Caffe JDK 1.6.0-7. FreeBSD CPU profiling limitations: FreeBSD does not provide means to obtain CPU time spent in certain thread, but only in entire process. Due to this, ALL times measured by means of CPU profiling will look like wall times, disregarding your wall vs. CPU time settings in "Settings | Wall Time Methods...". Also, thread CPU time will be same for all threads in thread telemetry.
- HP-UX IA64, 32-bit and 64-bit Java
Profiling can be done locally (profiler and profiled application run on same machine) or remotely (profiled application runs on another computer accessible by network).
Starting application with the profiler agent OR attaching it to a running instance of JVM
To profile a Java application, the profiler agent should be loaded into the JVM.
There are two ways to do it:
-
Start the profiled application with the profiler agent, using IDE integration, J2EE integration, or manually specifying appropriate JVM option.
This approach provides full set of profiling capabilities.
For detail, please choose appropriate subtopic that corresponds to your type of applications:
- Attach the profiler agent to a running JVM instance on demand. This approach simplifies profiling, as it allows to avoid special step to enable profiling: any running Java application can be profiled. However, attaching the agent to a running JVM is not always possible, and some profiling features are not available. Read more...
