See also: Changes in version 2019.1 builds
Object allocation recording: added support of the new Java profiling capability called heap sampling, which was introduced in Java 11 via JEP 331. The heap sampling provides a new JVMTI event to record allocated objects without using bytecode instrumentation.
Not instrumenting bytecode for object allocation recording reduces class load time and size of the resulting bytecode.
Also, this new approach is extremely useful in the attach mode, because it totally eliminates the pause on a first attempt to start object allocation recording, which is associated with instrumenting classes loaded before the agent attached.
By default, the heap sampling event is used instead of bytecode instrumentation whenever available,
that is, on Java 11 and newer.
To use bytecode instrumentation instead, please specify the agent startup option
Memory snapshot opening has been improved:
the dominator tree is now by default computed inside the profiler UI process.
Previously, an external process would always be launched for the dominator tree computing.
The old behavior can be reverted by specifying the property
The external process approach was introduced many years ago with the intention to support memory snapshot opening in the profiler UI running on a then-mainstream 32-bit JVM having essentially limited address space. Currently, the profiler UI runs on a 64-bit JVM, thus launching the external process no longer makes sense.
Another drawback of the old approach was that some antivirus programs might raise a false alarm for such external process and prevent it from launching, causing the snapshot opening failure.
com.yourkit.api.Controller.getTotalCreatedObjectSize()provide basic object allocation recording statistics. The same values can also be obtained with the command line tool's new commands
start-alloc-recordingstarts object allocation recording with custom record-each and size-limit parameters.
com.yourkit.probes.builtin.Databasesprobe overhead has been significantly reduced for some loads.
.gz) or ZIP (
Caveat: advanced support level is required on AIX, HP-UX, Solaris, Linux PPC.
According to our statistics, the profiler is rarely used on AIX, HP-UX, Solaris, Linux PPC. However, the ongoing support of these platforms requires significant resources to build, test and maintain, comparable with what it takes to support other, way more popular platforms.
To keep supporting these rare platforms as long as it practicable, we seek to at least a partial compensation from interested users.
Therefore, AIX, HP-UX, Solaris, Linux PPC are now declared advanced platforms. The profiler may run on an advanced platform, a JVM running on an advanced platform may be profiled (i.e. a running JVM may be connected), and results obtained on an advanced platform may be analyzed (i.e. a snapshot of a JVM running on an advanced platform may be opened or exported) only if the license is with the advanced support level.
.hprofsnapshots, only for the profiler-format
.snapshotfiles. The HPROF format does not allow arbitrary records, and extending a
.hproffile with custom records would make it invalid for 3rd party tools.
"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.