feature New option to open snapshot immediately after capturing. Option is available in Settings | On Snapshot Capture menu.
feature Useful snapshot actions from Welcome screen are also available in the popup menu of snapshot button.
feature Deadlocks view received an ability to ignore potential deadlock false positives, i.e. stacks which are legally frozen for a long time.
For each potentially deadlocked or hanged thread the Deadlocks view shows a link to ignore it. Once ignored, the stack will no longer be reported as a potential deadlock.
Ignored false positive deadlocks are stored in the file
This file can be deleted to reset to defaults.
feature Proxy configuration has been greatly improved. Now profiler is able to
obtain proxy configuration from your browser, operating system or from
Proxy Auto Configuration URL.
Proxy user and password can now be entered directly in the UI instead of specifying
feature Thrown Exceptions telemetry chart is available in Performance Charts view in Basic Telemetry section. The chart shows number of thrown exceptions per second.
feature System CPU usage telemetry was added to the CPU Usage chart. This telemetry shows total system CPU utilization, and allows you to investigate how system CPU usage correlates with the profiled application. Telemetry is available on Windows, Linux and macOS, and it is shown as dotted line on CPU chart.
feature New option
allows for partial loading of a memory snapshot by loading only first N objects and skipping the rest.
Although this approach gives incomplete picture, it may be practically useful when full snapshot loading cannot be done on particular machine due to lack of memory and/or if it takes too much time.
By default, the limit is 2,147,483,632 (~2 billion).
feature Object allocation recording with the help of the heap sampling JVMTI event is now supported on all platforms. In previous versions it was unavailable on Linux PPC and AIX.
Heap sampling is a Java profiling capability introduced in Java 11 via JEP 331 which makes it possible to record allocated objects without using bytecode instrumentation.
feature Memory inspection Leaked OSGi bundle class loaders finds OSGi bundle class loaders not associated with any current bundle revision.
Such loaders, along with all classes they loaded, are likely memory leaks. They can appear if after unloading a bundle external references to its objects are left.
The inspection is available for OSGi implementations Apache Felix and Eclipse Equinox.
feature Object explorer provides special presentation for objects specific for OSGi frameworks. It shows in-lined most important properties:
org.osgi.framework.Version- version as string
org.eclipse.osgi.internal.framework.EquinoxBundle) - symbolic name, version, .jar file path
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
feature Object explorer directly shows associated objects as pseudo-fields:
org.eclipse.osgi.internal.framework.EquinoxBundle), the bundle class loader (
org.eclipse.osgi.internal.loader.EquinoxClassLoader) is shown as the pseudo-field
<OSGi bundle loader>.
long com.yourkit.probes.JVM.getPersistentObjectId(Object)to explicitly obtain the persistent ID of an object. The intention is to help identify particular objects of interest in a memory snapshot. Classpath requirements for using this API are explained here.
feature Classes view previously located inside Memory & GC Telemetry was moved to a new dedicated page Classes inside the Memory tab. As before, Classes view is shown only in live mode and in a performance snapshot. It is superseded with more specialized views in a memory snapshot.
java.lang.OutOfMemoryErroropens with the exception thread preselected.
-XX:HeapDumpPathinstead of target directory e.g.
-XX:HeapDumpPath=/foo/bar.hprof, and the JVM makes a new dump to the same file while the profiler has started loading the old one.
com.yourkit.api.MemorySnapshotcan be used on Java 11 or newer. Snapshots of older Java versions can still be analysed by performing the analysis on Java 11+.
feature Action Tools | Open in IDE (F7) is improved to navigate to the exact code line when opening a lambda class name.
This solves a non-trivial task of matching a lambda class name to its source for classes with multiple lambdas. This is especially useful in memory snapshots for lambda object identification or in other situations when the lambda class name is presented without corresponding call tree context.
Limitation: source code navigation for lambdas will not be possible if the class loading events are not available (HPROF format snapshot) or not recorded (the class loading probe was explicitly disabled). The reason is that JVM does not provide API to match the generated lambda class name to a source code line, and we use our probes as a workaround.
NullPointerExceptionmight happen when adding a trigger on timer.
<user home>\.yjp\enable_launcher_log.txt, which may be helpful for troubleshooting. The log files
profiler-launcher-<PID>.logare created in the profiler log directory
java.lang.VerifyErrorwhen tracing bytecode produced by Android R8 compiler.
java.lang.VerifyErrorwhen applying probes to bytecode generated with CGLIB e.g. under Spring
Deprecation means that we intend to remove the feature or capability from a future release of YourKit Java Profiler. The feature or capability will continue to work and is fully supported until it is officially removed.