- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Solving performance problems
- CPU profiling
- Threads
- Deadlock detector
- Memory profiling
- Memory telemetry
- Memory snapshot
- Object allocation recording
- Shallow and retained sizes
- Memory views
- Objects view
- Class list
- Class and package
- Class loaders
- Web applications
- Object generations
- Reachability scopes
- Shallow size
- Object explorer
- Biggest objects (dominators)
- Allocations
- Object ages
- Merged paths
- Class hierarchy
- Method merged callees view
- Method back traces view
- Quick info view
- GC roots view
- Leak detection: working with paths
- Memory inspections
- Comparing memory snapshots
- Support of HPROF format snapshots
- Support of Java Flight Recorder (JFR)
- Support of Portable Heap Dumps (.phd)
- Values of primitive types
- Persistent object IDs
- Useful actions
- Set description language
- 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
- 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?
Allocations
Allocations section is available only for snapshots that contain recorded object allocations.
Allocations let you discover methods where objects were created.

Call tree
Shows a top-down call tree with the methods in which objects were created, either by thread

or with calls from all threads merged.

The tree is shown according to current filters.
Hot spots
Shows methods where the greatest number of objects from the set ("Hot spots by object count")

or objects with the greatest total shallow size ("Hot spots by object size") were created.

Methods are shown according to current filters:
- non-filtered methods (typically, methods from the source code of profiled application)
-
filtered methods (typically, methods from core classes and used libraries) that were
directly called from non-filtered methods or are at the top of thread stack trace (
Thread.run()
).
Method list
Methods are shown according to current filters:
- non-filtered methods (typically, methods from the source code of profiled application)
-
filtered methods (typically, methods from core classes and used libraries) that were
directly called from non-filtered methods or are at the top of thread stack trace (
Thread.run()
).
For each method, the list shows the number and shallow size of objects it had created.

Ages
Shows objects distributed by their ages.