YourKit Early Access Program (EAP) is the easiest way to get in touch with the latest technologies from YourKit.
You can have early access to new products and internal builds.
NOTE: THIS IS PREVIEW SOFTWARE AIMED AT PROVIDING YOU WITH AN OPPORTUNITY
TO TEST THE NEWEST FEATURES SCHEDULED FOR THE NEXT MAJOR RELEASE.
YOURKIT DOES NOT GUARANTEE THAT THIS SOFTWARE WILL RUN TROUBLE-FREE.
USING THIS SOFTWARE IS AT YOUR OWN DISCRETION AND DOES NOT ENTITLE YOU TO ANY
Your comments, suggestions and bug reports are welcome. In the forum you
can discuss product features with YourKit developers and post bug reports.
Download YourKit Java Profiler 2015.12 EAP (*), build 20 (February 5, 2016)
Version 2015.12 (* - the name is subject to change) will be the next release of YourKit Java Profiler.
See change list.
||Windows (x86, x64)
Download and run installer
||Mac OS X (Intel)
Download and unpack zipped application
(x86, x64, ARMv5, ARMv7, AArch64, ppc, ppc64, ppc64le)
Download tar.bz2 archive
tar xfj <archive name>.tar.bz2
||Solaris (SPARC, x86, x64)
Download and unpack ZIP archive
||AIX (ppc, ppc64)
||FreeBSD (x86, x64)
Actually, the ZIP archive is all-in-one: it contains files for all supported platforms,
including Windows, Mac OS X, and Linux.
However, to ensure easiest installation and best user experience,
it is strongly recommended to use a dedicated download option for these platforms instead:
Windows bundle provides convenient installer and bundled JRE,
Mac OS X - a Mac-style application,
Linux - bundled Oracle JRE for x64 which is superior to OpenJDK for UI applications.
Changes in build 20
New feature: higher-level profiling of JPA (Java persistence).
Supported JPA implementations: Hibernate, EclipseLink, OpenJPA.
JPA information is available in:
- "Java EE statistics" view, Database section
- "Events" tab (new built-in probes
New feature: higher-level profiling of AsynchronousChannel.
The information is available in
"Events" tab (new built-in probe
UI: minor improvements in "Events" and "Performance counters" tabs.
Changes in build 19
New feature: higher-level profiling of MongoDB. MongoDB request information is available in:
- "Java EE statistics" view, Database section
- "Events" tab (new built-in probe
- "Performance charts" tab (new built-in probe
Probes: improved speed of reflection calls performed in some built-in probes
UI: bug fixed: possible assertion failure on profiling data update
connection to a profiling application, especially remote, completes faster thanks to merging multiple requests to one
Changes in build 18
Optimization: less memory is needed to open performance snapshots
Changes in build 17
"Duplicate objects" inspection detects duplicates of higher order.
It now performs multiple passes to identify objects referencing different instances with the same value, recursively.
For example, it can detect if the same XML document is parsed and kept in memory multiple times.
Also, the estimated memory waste is now calculated from the duplicate objects' retained size.
This puts the biggest higher level duplicates, like lists or maps, to the top of the list.
Optimization: less memory is needed to open some snapshots
Changes in earlier builds (excluding fixes backported to v2015)
Automatic updates. This feature is available on all platforms.
the range of trivial methods excluded
from CPU tracing instrumentation for performance consideration has been extended
memory snapshot loading speed increased and memory footprint reduced
HPROF snapshot loading optimization
to save memory, native object IDs used in HPROF snapshots are by default
no longer stored in memory after the snapshot loading is completed.
In effect, individual objects are identified in the UI with their arbitrary indices,
exactly like it works for the profiler format
To load the native IDs please specify
<Profiler Installation Directory>/bin/ui.ini
(since build 9, in
export of a byte array to a binary file now works much faster
Class list and other object-grouping views now open up to 2 times faster
the allocation recording parameter record-each can now be set to 0 to allow filtering
recorded objects only by their size
Memory profiling: added handling of
This class introduced in Java 7 allows to associate a computed value with every class.
For Java 7 and Java 8,
the maps are shown referenced from corresponding
java.lang.Class instances via
an instance field reference
In latest Java 9 there is unfortunately no means to identify which particular class each map belongs to,
and we instead show the maps as being GC roots of type "Held by JVM".
This feature works with HPROF format snapshots only.
JVM's JVMTI API used to create the profiler format snapshot files
does not provide enough information to let the feature work.
Object explorer: class-specific object presentation:
more information is shown for thread objects (instances of
java.lang.Thread and subclasses):
in addition to the thread name, also shown are tid, status and whether the thread is daemon
"GC Roots" view (Memory | GC Roots):
methods under "Roots by thread" are sorted according to the call stack order
objects allocated in a thread or at a stack trace whose detail the JVM cannot provide at the moment for some reason
are no longer skipped, but recorded and presented under artificial nodes
"<Thread could not be retrieved>" and "<Stack trace could not be retrieved>"
java.lang.TypeNotPresentException when opening particular snapshot
class constant pool presentation cleanup:
<constant pool> entries are not shown for the references that are also accessible from static fields of the same class
GC telemetry: new "GC Pauses" graph added under the "Basic telemetry" node in the "Performance counters" tab.
Also, "GC Pauses" graph, if corresponding data is available (currently - on Sun/Oracle Java 7 and newer),
replaces a less informative "Time Spent in GC" in "Memory & GC telemetry" in the "Memory" tab.
Note: time spent in GC curve is also available in the CPU usage graph in the "CPU" tab.
Agent: stability improvements
Probes: built-in probe Databases rewritten to solve different class loading issues affecting,
in particular, some JBoss configurations, as well as the new module system introduced in Java 9 ("Project Jigsaw").
Agent: probes are never applied (instrumentation is not performed) to in-runtime generated lambda proxy classes
for the purpose of micro-optimization,
as well as to avoid bytecode instrumentation issues in some corner cases which might lead to verification errors
Agent: Java 9 support: optimization:
native methods annotated with
@HotSpotIntrinsicCandidate are not instrumented by default
(and thus are not visible in CPU tracing or probes should any be applicable),
to avoid profiling overhead and get rid of JVM warnings like
"Method [java.lang.reflect.Array.getLength(Ljava/lang/Object;)I] is annotated with @HotSpotIntrinsicCandidate
but no compiler intrinsic is defined for the method."
To instrument such methods please specify the agent startup option "_with_intrinsic_candidates".
Java 9 support: JEP 254: Compact Strings introduced in Java 9 b93 supported
Java 9 support: added handling of new class
Bug fixed: JBoss might not start from within an IDE due to an improper initialization sequence of its custom MBeans.
Previously, until this fix was made, it was required to specify
as a workaround.
IDE integration: bug fixed: internal error when action "Tools | Open in IDE (F7)"
was applied in object explorers to a field referencing an instance of
IDE integration: IntelliJ IDEA: bug fixed: action "Tools | Open in IDE (F7)"
might navigate to a wrong anonymous class in some non trivial cases
Caveat: legacy, pre-v2015 license keys are no longer accepted.
New, v2015-style license keys are required.
The profiler will suggest you to get a new key from YourKit if you're using an old one.
Profiler UI settings file
ui.ini was moved from the profiler installation directory
to the user home, now being
to make changes in this file persistent after upgrading to a newer build and
simplify editing in when the profiler directory requires root access to modify files.
Export: improvement: size of the generated HTML files significantly reduced
UI: bug fixed: the profiler suggested to choose whether to open a huge snapshot
as a performance snapshot or as a memory snapshot not only when opening a memory snapshot (which is correct),
but also when opening already a performance snapshot (which is incorrect)
the installer by default offers to install the profiler
to the 64-bit program directory, e.g.
instead of the 32-bit program directory, e.g.
C:\Program Files (x86).
Internal improvements and clean up