- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Capturing snapshots
- Solving performance problems
- CPU profiling
- Threads
- Memory profiling
- Garbage collection
- Exception profiling
- Probes: monitor higher level events
- 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 API
- Profiler HTTP API
- Command line tool to control profiling
- Settings
Garbage collection
Garbage collection telemetry
Garbage collection telemetry graphs shown in the Memory tab will help you estimate garbage collector load. If garbage collection takes a significant amount of time, it is advised to run object allocation recording to pin-point and optimize the problematic code.
The "Garbage Collections" and "Time Spent in GC" graphs are always available.

You can explicitly run garbage collection using "Force Garbage Collection"
toolbar button: .
Garbage collection in memory snapshot
If memory snapshot contains recorded allocations, "Garbage Collection" view, in addition to garbage collection telemetry described above, will also contain methods that were the sources of excessive garbage allocation.
See Solving performance problems for details on why one should avoid excessive garbage allocation.
The shown number and shallow sizes correspond to the objects that were created and recycled since the object allocation recording was started and prior to the moment of the snapshot capture.
-
Call tree
Shows a top-down call tree with methods in which collected objects were created, for each particular thread ("by thread")
or with calls from all threads merged.
The tree is shown according to current filters.
-
Hot spots
Shows methods that made the biggest contribution to creating objects that were collected, either by object count or shallow size:
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 collected objects it had created.