Fully featured low overhead profiler for Java EE and Java SE platforms.
Performance monitoring and profiling of Jenkins, TeamCity, Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

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.

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 CUSTOMER SUPPORT.

Feedback

Your comments, suggestions and bug reports are welcome. In the forum you can discuss product features with YourKit developers and post bug reports.

YourKit Java Profiler 2018.05 EAP

Build #56, released on November 8, 2018

Windowsx86, x64 Download and run installer
macOSIntel Download disk image
Linux
x86, x64, ARM, AArch64, ppc, ppc64, ppc64le
Download and unpack ZIP archive
Launch bin/profiler.sh
SolarisSPARC, x86, x64
HP-UXIA64
AIXppc, ppc64
FreeBSDx86, x64



Changes in build 56

  • Java 11 is supported
  • IBM's AdoptOpenJDK.net OpenJDK builds based on the Eclipse OpenJ9 VM as well as on HotSpot are supported. We support all Java versions available at AdoptOpenJDK.net, which at the moment are Java 8, Java 9, Java 10, Java 11.
  • Attach mode, i.e. the ability to profile a running JVM instance started without the profiler agent, has been supported for IBM Java based on the Eclipse OpenJ9 VM. This JVM powers the latest IBM Java 8 builds, as well as IBM OpenJDK 8/9/10/11 available at AdoptOpenJDK.net.
  • Memory profiling: 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 JVM event (JVMTI function) 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 disable_heap_sampling.

  • Memory profiling: when the profiler opens a memory snapshot, the dominator tree computing is now by default performed 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 -Dyk.dc.external-process=true in <user home>/.yjp/ui.ini.

    The external process approach was introduced many years ago and was intended to help loading memory snapshots to the profiler UI running on a 32-bit JVM, then-mainstream, with essentially limited address space. Currently, the profiler UI requires a 64-bit JVM to run, 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, hence the snapshot failed to open.

  • Event recording with probes: com.yourkit.probes.builtin.Databases probe overhead significantly reduced for some loads
  • Improvement: the profiler UI now shows time in 12 hour (AM/PM) or 24 hour format depending on the system settings
  • Improvement: Welcome screen: streamlined agent statuses in regard to the agent attachability. A process without the agent loaded is no longer indicated with the "ready to attach" status, because it cannot be reliably determined until attach is actually performed. Instead, the UI now allows an attempt to attach to any process, which will either succeed or show an error message.
  • Improvement: free form snapshot annotation is now easily accessible in the recent snapshot list, as well as in the "Open Snapshot" dialog.
  • Local network address resolution was improved to properly handle machines with misconfigured or absent "localhost" host name.
  • "Open Snapshot" dialog now shows and allows to open a snapshot stored in a GZIP (.gz) or ZIP (.zip) archive
  • Monitor profiling: bug fixed: live view is updated properly, without unneeded expands/collapses
  • Bug fixed: Summary tab: no properties retrieved for HPROF dumps of Java 10+
  • Improvement: Horizontal scrolling with two fingers gesture now works on Windows.
  • Bug fixed: wrong tooltip position in "Open Snapshot" dialog
  • Bug fixed: permanent, non-closable tooltip in "Threads" view after applying thread name filter
  • Bug fixed: toolbar panel button visual bug on attempt to start CPU tracing or allocations recording if they are disabled
  • Bug fixed: menu separator with text does not look like a separator
  • Caveat: the profiler UI now requires a 64-bit JVM to run. Also, the API to programmatically open memory snapshots requires a 64-bit Java too. Please note that profiling of both 32-bit and 64-bit JVMs is still fully supported, and the console wizards (Java EE server integration, attach) can run on either 32-bit or 64-bit JVM.
  • Caveat: due to low demand and significant resources required to build, test and maintain, the following platforms are now considered advanced: AIX, HP-UX, Solaris, Linux PPC. This means that connecting the profiler UI to a JVM running on such platform, or opening or exporting a snapshot captured on such platform now requires a license with advanced support. Few people use these platforms nowadays, but the cost of supporting them is significant. We seek to at least partially compensate it, and keep these platforms supported as long as it practicable.