- 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
- Object allocation profiling
- Memory profiling
- Monitor profiling
- Exception profiling
- JFR (Java Flight Recorder)
- 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.Booleanjava.lang.Bytejava.lang.Characterjava.lang.Doublejava.lang.Floatjava.lang.Integerjava.lang.Longjava.lang.Short
-
Atomic values:
java.util.concurrent.atomic.AtomicBooleanjava.util.concurrent.atomic.AtomicIntegerjava.util.concurrent.atomic.AtomicLong
-
Other numeric classes:
java.math.BigDecimaljava.math.BigInteger
-
Reflection:
java.lang.reflect.Constructorjava.lang.reflect.Fieldjava.lang.reflect.Method
-
Collection size for collections:
java.util.ArrayListjava.util.Arrays$ArrayListjava.util.HashMapjava.util.HashSetjava.util.Hashtablejava.util.IdentityHashMapjava.util.LinkedListjava.util.PriorityQueuejava.util.TreeMapjava.util.Vectorjava.util.WeakHashMapGNU Trove library collections
-
Value names for
java.lang.Enuminstances. -
For instances of
java.util.Optional*the value is shown if available, otherwise shown asEmpty.
-
For instances of
java.awt.Colorcolor components (red/green/blue/alpha) as well as the color itself are presented. -
For instances of
java.lang.Threadin 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.Bufferthe buffer capacity is immediately shown. -
The path is immediately shown, if available, for:
java.io.RandomAccessFilejava.io.FileInputStreamjava.io.FileOutputStreamsun.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.Filejava.net.URLjava.time.*java.util.Datejava.util.jar.JarFilejava.util.UUIDjava.util.zip.ZipFile