Fully featured low overhead profiler for Java EE
and Java SE platforms.
Easy to use performance and memory profiler for .NET framework.
Supports ASP.NET, Silverlight, .NET Windows services and more.
Early Access Program

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.



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
Unpack: tar xfj <archive name>.tar.bz2
Launch bin/
Solaris (SPARC, x86, x64) Download and unpack ZIP archive
Launch bin/
HP-UX (IA64)
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 com.yourkit.probes.builtin.JPA_Hibernate, com.yourkit.probes.builtin.JPA_EclipseLink, com.yourkit.probes.builtin.JPA_OpenJPA)
  • New feature: higher-level profiling of AsynchronousChannel. The information is available in "Events" tab (new built-in probe com.yourkit.probes.builtin.AsyncChannels)
  • 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 com.yourkit.probes.builtin.MongoDB)
    • "Performance charts" tab (new built-in probe com.yourkit.probes.builtin.MongoDBLW)
  • Probes: improved speed of reflection calls performed in some built-in probes
  • UI: bug fixed: possible assertion failure on profiling data update
  • Optimization: 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

  • Memory profiling: "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.
  • CPU profiling: the range of trivial methods excluded from CPU tracing instrumentation for performance consideration has been extended
  • Memory profiling: memory snapshot loading speed increased and memory footprint reduced
  • Memory profiling: HPROF snapshot loading optimization
  • Memory profiling: 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 .snapshot files. To load the native IDs please specify -Dyjp.hprof.oids=true in <Profiler Installation Directory>/bin/ui.ini (since build 9, in <user home>/.yjp/ui.ini)
  • Memory profiling: UI: Quick info: optimization: export of a byte array to a binary file now works much faster
  • Memory profiling: UI: optimization: Class list and other object-grouping views now open up to 2 times faster
  • Memory profiling: 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 java.lang.ClassValue maps. 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 classValueMap . 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
  • Memory profiling: "GC Roots" view (Memory | GC Roots): methods under "Roots by thread" are sorted according to the call stack order
  • Memory profiling: allocation recording: 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>"
  • Memory profiling: bug fixed: java.lang.TypeNotPresentException when opening particular snapshot
  • Memory profiling: object explorer: 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 jdk.internal.misc.Unsafe
  • 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 -Djboss.platform.mbeanserver 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 java.lang.Class
  • 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 <user home>/.yjp/ui.ini, 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)
  • 64-bit Windows: the installer by default offers to install the profiler to the 64-bit program directory, e.g. C:\Program Files, instead of the 32-bit program directory, e.g. C:\Program Files (x86).
  • Internal improvements and clean up
What's new
April 2, 2015
YourKit Java Profiler 2015 released
YourKit Profiler 2015 for .NET released
JDJ Editors' Choice Award Winner YourKit Java Profiler received the Java Developer's Journal Editors' Choice Award.