- System requirements
- Profiler architecture
- Profiler installation
- Uninstall profiler
- Running the profiler
- Profiler activation
- Welcome screen
- Start profiling
- Profiling overhead
- Snapshots
- Solving performance problems
- CPU profiling
- Thread profiling
- Virtual threads support
- Deadlock detector
- Memory profiling
- Understanding garbage collection
- Shallow and retained sizes
- JVM memory structure
- Object allocation profiling
- GC roots view
- Memory tab
- Telemetry
- Classes
- Object explorer
- Dominators - Biggest objects
- Memory inspections
- Group objects by category
- Allocations
- Method merged callees view
- Method back traces view
- Quick info view
- Leak detection: working with paths
- Merged paths
- Class hierarchy
- Persistent object IDs
- Useful actions
- Set description language
- Garbage collection
- Monitor profiling
- Exception profiling
- Telemetry
- Probes: monitor events of various kinds
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Automatic deobfuscation
- Summary
- Filters
- Profiler command line
- Export of profiling results to external formats
- Profiler Java API
- Profiler HTTP API
- Settings
- Troubleshooting and FAQ
Object explorer
This simple view allows to traverse outgoing and incoming object references. This is not useful for memory leak detection, but this is powerful tool to examine values of object's fields, as you do in a debugger. To find memory leaks, use paths to GC roots.
Outgoing references
Shows all objects of the set and allows you to browse their outgoing references. Outgoing references of an object are fields or array elements of that object that point to other objects.

Incoming references
Shows all objects of the set and allows you to browse their incoming references. Incoming references of an object are references to that object.
Do not use Incoming references to find out why an object is retained in memory. Use paths, which is specially designed for this purpose.

Class-specific object presentation
In Object explorer values are immediately shown for object instances of common classes, so the most useful information is inlined, saving time expanding and searching for the specific field. Profiler has special presentation for the following classes:
-
Primitive value wrappers:
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
-
Atomic values:
java.util.concurrent.atomic.AtomicBoolean
java.util.concurrent.atomic.AtomicInteger
java.util.concurrent.atomic.AtomicLong
-
Other numeric classes:
java.math.BigDecimal
java.math.BigInteger
-
Reflection:
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Method
-
Collection size for collections:
java.util.ArrayList
java.util.Arrays$ArrayList
java.util.HashMap
java.util.HashSet
java.util.Hashtable
java.util.IdentityHashMap
java.util.LinkedList
java.util.PriorityQueue
java.util.TreeMap
java.util.Vector
java.util.WeakHashMap
GNU Trove library collections
-
Value names for
java.lang.Enum
instances. -
For instances of
java.util.Optional*
the value is shown if available, otherwise shown asEmpty
. -
For instances of
java.awt.Color
color components (red/green/blue/alpha) as well as the color itself are presented. -
For instances of
java.lang.Thread
in addition to the thread name, also shown are tid, status and whether the thread is daemon. -
If a class has only one instance field, and the field is primitive, field name and its value is shown:
-
For instances of
java.nio.Buffer
the buffer capacity is immediately shown. -
The path is immediately shown, if available, for:
java.io.RandomAccessFile
java.io.FileInputStream
java.io.FileOutputStream
sun.nio.ch.FileChannelImpl
-
OSGi frameworks:
org.osgi.framework.Version
- version as string-
OSGi bundle
(
org.apache.felix.framework.cache.BundleImpl
,org.eclipse.osgi.internal.framework.EquinoxBundle
) - symbolic name, version, .jar file path -
Bundle class loader
(
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader
,org.eclipse.osgi.internal.loader.EquinoxClassLoader
) - symbolic name, version, .jar file path of the bundle to which the loader is related. A memory leak warning is also shown if the loader is not associated with any current bundle revision. org.apache.felix.framework.cache.BundleArchive
- .jar file path-
for an OSGi bundle
(
org.apache.felix.framework.cache.BundleImpl
,org.eclipse.osgi.internal.framework.EquinoxBundle
), the bundle class loader (org.apache.felix.framework.BundleWiringImpl$BundleClassLoader
,org.eclipse.osgi.internal.loader.EquinoxClassLoader
) is shown as the pseudo-field<OSGi bundle loader>
. -
and vice versa, for a bundle class loader its OSGi bundle
is shown as the pseudo-field
<OSGi bundle>
.
-
Other:
java.io.File
java.net.URL
java.time.*
java.util.Date
java.util.jar.JarFile
java.util.UUID
java.util.zip.ZipFile