- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Running applications with the profiler
- Local profiling
- Remote profiling
- Startup options
- Attaching profiler agent to a running JVM
- Profiling overhead: how to reduce or avoid
- Enabling profiling manually
- About JVMTI
- Connect to profiled application
- Troubleshoot connection problems
- Solving performance problems
- CPU profiling
- Threads
- Deadlock detector
- Memory profiling
- Garbage collection
- Monitor profiling
- Exception profiling
- Probes: monitor events of various kinds
- Performance Charts
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Summary, snapshot annotation, automatic deobfuscation
- IDE integration
- Time measurement (CPU time, wall time)
- Filters
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler Java API
- Profiler HTTP API
- Command line tool to control profiling
- Settings
- FAQ: How to profile in my scenario?
Running applications with the profiler
Local and remote profiling
The profiled application and the profiler can run on the same machine or on different machines.
These modes are called local profiling and remote profiling respectively.
The profiler agent
To profile a Java application, be it local or remote, the profiler agent should be loaded into the JVM.
Approach 1: Start JVM with the profiler agent
This approach is recommended as it provides the full set of profiling capabilities. To learn how to apply it, see appropriate subtopic:
Approach 2: Attach the profiler to a running JVM instance started without the agent
Attaching the profiler agent to a running JVM instance simplifies profiling, as it avoids a special step to enable profiling: any running Java application can be profiled on demand. However, attaching to a running JVM is not always possible, and some profiling features are not available.
Read more about attach.
System requirements
The supported operating systems and Java versions are described in the system requirements.