YourKit Profiler Changelog

What's new in YourKit Profiler 2024.3 Build 152

Apr 9, 2024
  • IntelliJ IDEA 2024.1 is supported.
  • The bundled runtime has been updated.

New in YourKit Profiler 2024.3 Build 148 (Mar 19, 2024)

  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 110 (Mar 15, 2024)

  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 109 (Feb 16, 2024)

  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 107 (Feb 2, 2024)

  • Update the bundled OpenSSL library to the latest version 3.0.13.
  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 106 (Jan 24, 2024)

  • Users may experience internal errors when establishing remote connections via SSH.

New in YourKit Profiler 2023.9 Build 104 (Jan 11, 2024)

  • The profiler could incorrectly determine the bitness of the SAP JVM.
  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 103 (Dec 15, 2023)

  • Eclipse 2023-12 is supported.
  • IntelliJ IDEA 2023.3 is supported.
  • NetBeans 20 is supported.
  • WildFly 30 is supported.
  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 101 (Nov 10, 2023)

  • Update bundled runtime and libraries.

New in YourKit Profiler 2023.9 Build 97 (Sep 27, 2023)

  • Update the bundled OpenSSL library to the latest version 3.0.11.

New in YourKit Profiler 2023.9 Build 96 (Sep 19, 2023)

  • JVM support:
  • Feature Java 21 is supported.
  • Windows support:
  • Feature Profiler UI has been ported to the Windows arm64 platform. Now you can launch profiler UI without emulation on your Windows arm64 laptops.
  • Caveat The minimal supported Windows version for the profiler UI is now Windows 10.
  • Java Flight Recorder support
  • Feature Allocation flame graph is available in the JFR snapshots.
  • YourKit Connection Broker:
  • Feature Connection Broker shows CPU utilization in the application list for applications running with the profiler agent 2023.9.
  • CPU usage column in the application list
  • Feature For applications running with the profiler agent 2023.9, the broker shows an application properties page, which displays environment variables, command line parameters, and various JVM properties.
  • Networking:
  • Feature Authentication with encrypted PPK Version 3 key file is supported. In particular, profiler supports PuTTY keys with the Argon2 hashing scheme.
  • Improvement The profiler detects a situation where the connection is established through a misconfigured HTTP proxy server, and shows a special error message to help resolve the issue.
  • User interface:
  • Feature The profiler supports drag and drop. Now, in order to open a snapshot, you can simply drag and drop it into the profiler window.
  • Improvement Improved responsiveness of the user interface, when synchronizing with the profiler agent.
  • Improvement Smoother animations on Windows.
  • Memory profiling:
  • Feature Allocation flame graph is a new way to visualize an allocation call tree, which allows finding the object allocation hotspots quickly and easily. Allocation flame graph is similar to CPU flame graph, but shows the allocations as a flame.
  • Allocation flame graph
  • Fix In several cases some Object[] objects were shown as system classes in the GC roots view.
  • IDE integration:
  • Feature Eclipse 2023-09 is supported.
  • Feature Integration with IntelliJ IDEA installed via JetBrains Toolbox 2.0 is supported.
  • Feature MyEclipse 2023.1 is supported.
  • Feature NetBeans 19 is supported.
  • Feature TomEE run configuration is supported in Eclipse.
  • Feature TomEE run configuration is supported in IntelliJ IDEA.
  • EE server support:
  • Feature Java server integration wizard now supports TomEE server.
  • Feature Java server integration wizard now supports Open Liberty server.
  • Feature WildFly 29 server is supported.
  • Caveat Support of Apache Geronimo server is discontinued.
  • Events:
  • Feature MongoDB driver version 4.10 is supported.
  • Feature Cassandra Datastax Java Driver 4.17 is supported.
  • Miscellaneous:
  • Feature New command line options -license-key=<key> and -accept-eula to enter the license key and accept profiler EULA, which can be used for unattended installation.

New in YourKit Profiler 2023.5 Build 228 (Aug 1, 2023)

  • IntelliJ IDEA 2023.2 is supported.
  • Update bundled runtime.

New in YourKit Profiler 2023.5 Build 227 (Jul 13, 2023)

  • Bug-fixes and performance improvements.

New in YourKit Profiler 2023.5 Build 226 (Jul 6, 2023)

  • Exporting profiling results to CSV format might fail under several circumstances.

New in YourKit Profiler 2023.5 Build 225 (Jun 26, 2023)

  • Update OpenSSL library to 3.0.9.
  • Update bundled runtime.

New in YourKit Profiler 2023.5 Build 224 EAP (May 31, 2023)

  • JVM support
  • feature Java 20 is supported.
  • Java Flight Recorder support
  • Loading of JFR files has been greatly improved. We have resolved all known issues with JFR file opening. JFR files produced by JetBrains tools and async profiler load just fine now.
  • feature You can now click on performance charts to get the stack traces of the CPU samples.
  • The profiler correctly displays C++ methods that may appear in the recorded CPU samples.
  • YourKit Connection Broker:
  • Profiler UI obtains the list of profiled applications much faster.
  • Stability of the connection to the broker is greatly improved.
  • Networking:
  • We have improved the network communication protocol between the profiler UI and the profiler agent. As the result, fewer data is transferred over the network and synchronization is performed faster.
  • User interface:
  • The user interface of Performance charts view has been refactored and modernized. It works faster. The tooltips do not overlap the graphs. It is possible to collapse the drawer with performance charts tree to save horizontal space for graphs. You can simultaneously see the uptime and the clock time of the events.
  • Performance charts: New action in the toolbar Sticky to right allows to explicitly control auto-scrolling behavior of performance charts.
  • Performance charts: New Smooth action in the toolbar helps to smooth out short-term fluctuations on graphs. This is extremely useful for visualizing of fast changing data.
  • Performance charts: There are new actions 15 minutes range, 30 minutes range and Maximum range in the charts' toolbar to quickly change the range of visible data.
  • Performance charts: The duration of events has nanosecond precision.
  • Export of performance charts to CSV format now has clock time column in addition to uptime.
  • It is now possible to zoom in and zoom out the performance charts by Ctrl + Mouse wheel scrolling.
  • There is a new interface control for scrolling the scaling the performance charts.
  • The Threads view has been updated to display Blocked and Waiting with timeout states separately, whereas previously they were included under the Waiting state.
  • Profiler UI is much snappier when synchronizes with the profiler agent. Many operations have been moved to the background tasks, that make UI faster and more responsive.
  • UI on Linux uses OpenGL by default. This greatly increases the speed of the user interface and improves the UX.
  • UI on macOS utilizes Metal rendering framework. This greatly increases the speed of the user interface and improves the UX.
  • Method list in the snapshot comparison opens much faster.
  • Bugs that caused numerous problems when synchronizing the UI with a profiling agent have been fixed.
  • The list of monitored applications on the Welcome screen now better keeps scroll position after refresh. This issue was extremely annoying when hundreds of the profiled applications were exposed through the YourKit Connection Broker.
  • Fixed issues which led to performance degradation when profiler UI was connected to the application for a long time.
  • OutOfMemoryException might happen when profiler UI was connected to the application for a long time.
  • Method list in the snapshot comparison could contain duplicate entries.
  • Action Select All in the popup menu of Threads view might crash.
  • It was not possible to run Undo "Expand Filtered Calls" action with the keyboard shortcut Ctrl+Z.
  • IDE integration:
  • Profiling of JAR application configurations is supported in IntelliJ IDEA.
  • The profiler finds JFR snapshots that have been saved by IntelliJ IDEA in the ~/IdeaSnapshots directory.
  • EE server support:
  • GlassFish 7.0 is supported.
  • Jetty 12.0 is supported.
  • Tomcat 10.1 is supported.
  • WebSphere Liberty 23 is supported.
  • WildFly 27 is supported.
  • Events:
  • New @MethodTimeNs annotation allows to record event duration with nanosecond precision.
  • Cassandra Datastax Java Driver 4.15 is supported.
  • DataNucleus 6.0 is supported.
  • EclipseLink 4.0 is supported.
  • Hibernate 6.2 is supported.
  • JUnit5 lifecycle annotations from org.junit.jupiter package are supported.
  • Sync and reactive streams MongoDB drivers 4.9 are supported.
  • Miscellaneous:
  • We have improved YourKit's snapshot format to achieve faster snapshot loading and better compatibility with the upcoming profiler versions.
  • New off-line export options export.exact.retained.size.min.ms and export.exact.retained.size.min.count were added to calculate exact retained sizes of the objects.
  • YourKit discontinued to build native profiler agents for AIX platform, that was deprecated in the previous profiler version. You can still analyze HPROF or JFR files captured on AIX if you have a support contract with an advanced tier.
  • Support of Linux ppc64 architecture has been discontinued.

New in YourKit Profiler 2023.5 Build 212 EAP (May 18, 2023)

  • The profiler correctly displays C++ methods that may appear in the recorded CPU samples.

New in YourKit Profiler 2023.5 Build 211 EAP (May 17, 2023)

  • Improvement:
  • The profiler correctly displays C++ methods that may appear in the recorded CPU samples.

New in YourKit Profiler 2023.5 Build 193 EAP (May 2, 2023)

  • JVM support:
  • feature Java 20 is supported.
  • Java Flight Recorder support:
  • improvement Loading of JFR snapshots has been greatly improved. We have resolved all known issues, that were causing problems with JFR snapshot opening. JFRs captured from JetBrains JVM or async profiler are loading fine now.
  • feature You can now click on performance charts to get the stack traces of the CPU samples.
  • YourKit Connection Broker:
  • improvement Profiler UI obtains the list of profiled applications much faster.
  • improvement Stability of the connection to the broker is greatly improved.
  • Networking:
  • improvement We have improved the network communication protocol between the UI and the profiler agent. As the result, fewer data is transferred over the network and synchronization is performed faster.
  • User interface:
  • feature The user interface of Performance charts view has been refactored and modernized. It works faster. The tooltips do not overlap the graphs. It is possible to collapse the drawer with performance charts tree to save horizontal space for graphs. You can simultaneously see the uptime and the clock time of the events.
  • feature Performance charts: New action in the toolbar Sticky to right allows to explicitly control auto-scrolling behavior of performance charts.
  • feature Performance charts: New Smooth action in the toolbar helps to smooth out short-term fluctuations on graphs. This is extremely useful for visualizing of fast changing data.
  • feature Performance charts: There are new actions 15 minutes range, 30 minutes range and Maximum range in the charts' toolbar to quickly change the range of visible data.
  • feature Performance charts: The duration of events has nanosecond precision.
  • feature Export of performance charts to CSV format now has clock time column in addition to uptime.
  • feature It is now possible to zoom in and zoom out the performance charts by Ctrl + Mouse wheel scrolling.
  • feature There is a new interface control for scrolling the scaling the performance charts.
  • improvement Profiler UI is much snappier when synchronizes with the profiler agent. Many operations have been moved to the background tasks, that make UI faster and more responsive.
  • improvement UI on Linux uses OpenGL by default. This greatly increases the speed of the user interface and improves the UX.
  • improvement UI on macOS utilizes Metal rendering framework. This greatly increases the speed of the user interface and improves the UX.
  • improvement Method list in the snapshot comparison opens much faster.
  • fix Bugs that caused numerous problems when synchronizing the UI with a profiling agent have been fixed.
  • fix The list of monitored applications on the Welcome screen now better keeps scroll position after refresh. This issue was extremely annoying when hundreds of the profiled applications were exposed through the YourKit Connection Broker.
  • fix Fixed issues which led to performance degradation when profiler UI was connected to the application for a long time.
  • fix OutOfMemoryException might happen when profiler UI was connected to the application for a long time.
  • fix Method list in the snapshot comparison could contain duplicate entries.
  • fix Action Select All in the popup menu of Threads view might crash.
  • IDE integration:
  • feature Profiling of JAR application configurations is supported in IntelliJ IDEA.
  • EE server support:
  • feature GlassFish 7.0 is supported.
  • feature Jetty 12.0 is supported.
  • feature Tomcat 10.1 is supported.
  • feature WebSphere Liberty 23 is supported.
  • feature WildFly 27 is supported.
  • Events:
  • feature New @MethodTimeNs annotation allows to record event duration with nanosecond precision.
  • feature DataNucleus 6.0 is supported.
  • feature EclipseLink 4.0 is supported.
  • feature Hibernate 6.2 is supported.
  • feature Sync and reactive streams MongoDB drivers 4.9 are supported.
  • Miscellaneous:
  • improvement We have improved YourKit's snapshot format to achieve faster snapshot loading and better compatibility with the upcoming profiler versions.
  • feature New off-line export options export.exact.retained.size.min.ms and export.exact.retained.size.min.count were added to calculate exact retained sizes of the objects.
  • caveat YourKit discontinued to build native profiler agents for AIX platform, that was deprecated in the previous profiler version. You can still analyze HPROF or JFR snapshots captured on AIX if you have a support contract with an advanced tier.
  • caveat Support of Linux ppc64 architecture has been discontinued.

New in YourKit Profiler 2022.9 Build 183 (Apr 25, 2023)

  • Improved compatibility with the upcoming YourKit Java Profiler 2023.5.

New in YourKit Profiler 2022.9 Build 182 (Mar 25, 2023)

  • IDE integration: IntelliJ IDEA 2023.1 supported.
  • Bundled runtime has been updated.
  • SHA-1 signature is no longer used for code-signing.

New in YourKit Profiler 2022.9 Build 179 (Mar 7, 2023)

  • Bugfixes and performance improvements.

New in YourKit Profiler 2022.9 Build 178 (Feb 20, 2023)

  • IDE integration: IntelliJ IDEA: navigating to method "lambda$<name>$<index>" now opens the lambda source code
  • Update bundled OpenSSL library to the latest version 3.0.8.

New in YourKit Profiler 2022.9 Build 177 (Dec 18, 2022)

  • Lambda pattern handling has been improved for the "Ignore false positive deadlock" action.
  • Bug fixed: exception when opening some JFR files.

New in YourKit Profiler 2022.9 Build 176 (Dec 7, 2022)

  • IDE integration: IntelliJ IDEA 2022.3 supported.

New in YourKit Profiler 2022.9 Build 175 (Nov 25, 2022)

  • Fixed problem when com.yourkit.api.controller.Controller did not respect connect timeout property.
  • Bundled runtime has been updated.
  • Profiler agent for AIX is deprecated and scheduled for removal. You will be able to profile on AIX by opening HPROF and JFR snapshots

New in YourKit Profiler 2022.9 Build 171 (Nov 3, 2022)

  • Update bundled OpenSSL library to the latest version 3.0.7, which fixes CVE-2022-3786 and CVE-2022-3602. YourKit Java Profiler is not affected by this vulnerability, because it does not use TLS client authentication, but we recommend to apply the patch to stay with the most recent OpenSSL version.

New in YourKit Profiler 2022.9 Build 170 (Oct 27, 2022)

  • Fix problems with attach to Java applications on Linux.
  • Fix problems with running demo app on Linux.

New in YourKit Profiler 2022.9 Build 167 (Oct 22, 2022)

  • Bugfixes.

New in YourKit Profiler 2022.9 Build 166 (Oct 9, 2022)

  • Support of Tomcat 10.1
  • Bundled runtime has been updated.
  • Bugfixes.

New in YourKit Profiler 2022.3 Build 102 (May 17, 2022)

  • Fix: some JFR files failed to open.
  • Update bundled runtime.

New in YourKit Profiler 2022.3 Build 96 (Mar 28, 2022)

  • JVM support:
  • feature: Java 18 supported.
  • Docker support:
  • feature: ZIP archive with profiler agent binaries now contains agent for Alpine Linux. You can download this archive in your Docker files.
  • feature: It is possible to use environment variables in the startup options with the ${VARIABLE} syntax. Substitutions are helpful for options which are not known until execution time, in Docker containers, Kubernetes pods, and in the clustered environments.
  • Java Flight Recorder support:
  • feature: The profiler UI can open compressed JFR files.
  • User interface:
  • improvement: The startup speed of the UI has been improved.
  • improvement: In Threads view, in some case the thread was displayed as running, while it was actually waiting in the native code.
  • CPU profiling:
  • feature: CPU sampling shows the sample count in addition to time.
  • feature New CPU profiling mode Asynchronous periodic sampling, in which the profiler samples all threads periodically regardless of thread status and is able to measure wall or CPU time according to the settings.
  • feature: Asynchronous sampling is supported on a wide range of platforms
  • Effectively, the asynchronous sampling mode is available on all supported macOS and Linux architectures except for ppc64 (i.e. big endian).
  • feature: CPU sampling settings and CPU tracing settings replace arbitrary wall time filters with the time property specifying whether wall or CPU time is to be recorded.
  • improvement: Waiting methods from a hardcoded list are no longer automatically excluded from the profiling results. It was a controversial and non-transparent feature which confused some users. The list of excluded methods could not be modified, it was only possible not to apply it at all by specifying a property in ui.ini.
  • Alternatively we recommend measuring CPU time instead of wall time or use the What-If feature to explicitly exclude particular methods from the profiling results.
  • Memory profiling:
  • feature: Heap Sampling is the new object allocation recording mode which uses the JVM heap sampling event available in Java 11+ to record objects created after allocating each N bytes on average. Unlike the classic allocation recording controlled with the recordEach and sizeLimit parameters, there is absolutely no profiling overhead for creation of the objects not being recorded.
  • improvement: Object explorer UI is now responsive even when showing a huge number of objects as configured with the -Dyk.max.objects.to.show=N property.
  • improvement: Command line tool received the new command start-alloc-object-counting for starting object allocation recording in the object counting mode.
  • fix "Clear Telemetry" action did not reset total allocated count and size.
  • IDE integration:
  • feature: Eclipse 2022-03 supported.
  • feature: IntelliJ IDEA 2022.1 supported.
  • feature: NetBeans 13 supported.
  • EE server support:
  • feature: WebSphere Liberty 22 supported.
  • feature: WildFly 26 supported.
  • Events:
  • feature: Hibernate 6.0 supported.
  • feature: OpenJPA 3.2 supported.
  • Miscellaneous:
  • improvement: New agent startup option onexit=hprof has been added to complement the existing options onexit=memory and onexit=snapshot.
  • improvement: The profiler agent is now compiled with the options to avoid unnecessarily exported library symbols. This eliminates possible runtime linkage issues and reduces the agent library file size.
  • caveat: FreeBSD 32-bit (i386) is no longer supported. Note that FreeBSD 64-bit (amd64) remains a fully supported platform.
  • caveat: CPU usage estimation action and view in the "Events" tab, which were deprecated in version 2021.11, have been removed. This feature was confusing and never worked well. In most cases it produced the message "Impossible to estimate". It was hard to even find an event in a snapshot for which this action would give anything else. Please note, that CPU estimation in graphs is a different thing, it's a good feature which remains fully supported.
  • caveat: The deprecated profiler API class com.yourkit.controller.Controller has been removed. The profiler API class com.yourkit.api.controller.Controller should be used instead.
  • fix: Incorrect error message when activating the profiler without the Internet connection.

New in YourKit Profiler 2022.3 Build 84 EAP (Mar 12, 2022)

  • Changes in Version 2022.3:
  • JVM support
  • Alpine Linux support
  • Docker support
  • Java Flight Recorder support
  • User interface
  • CPU profiling
  • Memory profiling
  • IDE integration
  • Miscellaneous

New in YourKit Profiler 2021.11 Build 227 (Jan 29, 2022)

  • Fix: IDE integration configuration might interfere with the configuration from the previous release if installed in parallel.
  • Fix: Using IPv6 address as a host name in the com.yourkit.api.controller.Controller caused java.net.MalformedURLException.
  • Fix: CPU profiling: after a filtered method is expanded by clicking the <...> link in the upper "Call tree", its own time would not recalculate properly in a dependent view such as "Callee list".
  • The profiler agent refuses to load on the Zing JVM aka "Azul Platform Prime" which is not supported by the profiler (not to be confused with the fully supported HotSpot-based Azul Zulu), because profiling is not guaranteed to run on it trouble free. You can bypass this check at your own risk by specifying the startup option _no_zing_check.

New in YourKit Profiler 2021.11 Build 225 (Jan 13, 2022)

  • IDE integration: Eclipse 2021-12 supported.
  • Linked OpenSSL upgraded to version 1.1.1m.
  • The number of symbols exported from the dynamic library libyjpagent has been reduced.
  • Bug fixes and performance improvements in the profiler agent.

New in YourKit Profiler 2021.11 Build 224 (Jan 10, 2022)

  • Fix: "java.lang.ArithmeticException: long overflow" when opening specific JFR file.
  • Fix: live view "Call tree - By thread" became empty when CPU profiling stopped.
  • Update bundled JRE.

New in YourKit Profiler 2021.11 Build 221 (Dec 11, 2021)

  • Fix: the output of the actions "Copy Stacktrace" and "Copy Stacks" was incompatible with the Eclipse's "Java Stack Trace Console" and other tools expecting only the usual Java stack trace format.

New in YourKit Profiler 2021.11 Build 220 (Nov 30, 2021)

  • Fix: bridge method calls were improperly indicated as recursive.

New in YourKit Profiler 2021.11 Build 220 EAP (Nov 28, 2021)

  • Fix: bridge method calls were improperly indicated as recursive.

New in YourKit Profiler 2021.3 Build 235 (Nov 8, 2021)

  • Bug fixes and improvements for better compatibility with upcoming version 2021.11.

New in YourKit Profiler 2021.3 Build 233 (Oct 2, 2021)

  • Bug fixes and improvements for better compatibility with upcoming version 2021.11.

New in YourKit Profiler 2021.11 Build 154 EAP (Sep 27, 2021)

  • JVM support:
  • Java 17 supported.
  • Java Flight Recorder support:
  • Java Flight Recorder (JFR) support has been added.The profiler is now able to open JFR recording files (.jfr).
  • When corresponding records are available, the profiler shows:
  • Telemetry graphs for CPU usage, memory usage, garbage collection;
  • "CPU" tab with the profiling (sampling) results presented as call trees, method list, hotspots, flame graph;
  • Recorded events in "Events" and "Threads" tabs;
  • "Exceptions" tab;
  • "Summary" tab.
  • User interface:
  • Missing popup menu Expand/Collapse items.
  • ITab Events by Table has been renamed to Event Table. The new name is shorter, cleaner and more consistent with the events from Java Flight
  • Recorder.
  • Event table rename
  • IDE integration:
  • Eclipse 2021-09 supported.
  • MyEclipse 2021.5 supported.
  • Minimal supported MyEclipse version is now MyEclipse 2014.
  • IntelliJ IDEA: Open in IDE action tries to open a core class from the appropriate JDK if the project uses multiple JDKs.
  • NetBeans 12.4 supported.
  • Miscellaneous:
  • Automatic deobfuscation: line number deobfuscation is supported for Zelix KlassMaster (ZKM).
  • Solaris is no longer supported.
  • HP-UX is no longer supported.
  • Linux ppc 32-bit is no longer supported. Note that Linux ppc64 (64-bit big endian) and ppc64le (64-bit little endian) remain fully supported platforms.
  • AIX ppc 32-bit is no longer supported. Note that AIX ppc64 (64-bit) remains a fully supported platform.

New in YourKit Profiler 2021.3 Build 231 (Jun 3, 2021)

  • IDE integration: IntelliJ IDEA 2021.2 supported.

New in YourKit Profiler 2021.3 Build 230 (Apr 21, 2021)

  • Bug fixed: exception in the built-in probe com.yourkit.probes.builtin.Sockets when using a Unix domain socket in JDK 16.

New in YourKit Profiler 2021.3 Build 228 (Apr 11, 2021)

  • IDE integration: Eclipse 2021-03 supported.
  • Agent: bug fixed: incorrect default session name if the Java option --patch-module was specified.

New in YourKit Profiler 2021.3 Build 225 (Mar 19, 2021)

  • Bundled runtime updated. Improved fonts are among the changes.

New in YourKit Profiler 2021.3 Build 223 (Mar 16, 2021)

  • Telemetry:
  • UI was adopted to support ZGC.
  • CPU profiling:
  • The CPU profiling mode Call counting uses atomic counters to prevent undercounting.
  • "Count" column visibility issues when CPU sampling is started in live view.
  • Memory profiling:
  • Profiler is now able to open IBM J9 / OpenJ9 JVM's Portable Heap Dumps.
  • New action Exclude Retained Objects opens a new tab with all the objects from the current set except for the retained set of the current selection. You can find the action in the popup menus of memory views.
  • Ignoring retained objects and focusing on the rest might help finding memory leaks and analyze memory distribution.
  • Exclude retained objects popup
  • Class-specific object presentation: the object explorer immediately shows the library name for instances of java.lang.ClassLoader$NativeLibrary.
  • Memory snapshot loading time was greatly improved. The speedup varies from 10% to 20%.
  • Array shallow size calculation algorithm for HPROF snapshots was updated to support possible object layouts in JDK 15+.
  • The object allocation recording mode "Count allocated objects" uses atomic counters to prevent undercounting.
  • The dialog window for the action Memory | Contained Objects shows all options accessible without scrolling.
  • Object sizes can be precisely calculated for a HPROF snapshot created with the help of the .snapshot to .hprof converter.
  • Other snapshot processing optimizations.
  • Object explorer and Quick info might improperly show content of char[].
  • IDE integration:
  • IntelliJ IDEA 2021.1 supported.
  • Minimal supported IntelliJ IDEA version is now 2016.1. Support of IntelliJ IDEA 14 and 15 has been removed.
  • Minimal supported NetBeans version is now 8.2.
  • IntelliJ IDEA: plugin settings were not stored for a project of type "IntelliJ Platform Plugin".
  • EE server support::
  • Integration wizard supports Tomcat 10.
  • Integration wizard no longer supports defunct JRun server.
  • Triggers:
  • Triggers panel: show macro descriptions.
  • Events:
  • JEE 9 (Jakarta EE) supported.
  • OpenJPA 3.1 supported.
  • EclipseLink 3.0 supported.
  • Built-in probes for file I/O and processes were changed to instrument non-native methods only. This allows the probes to work in the attach mode too, in which the instrumentation of loaded native methods is impossible.
  • Miscellaneous:
  • Automatic deobfuscation: source file names are also deobfuscated. This new functionality was added for Zelix KlassMaster (ZKM) and Allatori. It is not available for other obfuscators because their obfuscation logs do not support it.
  • Summary tab shows the garbage collection name in the section Garbage collection.
  • Summary tab shows the profiled application's PID.
  • Summary tab shows the profiled application's profiler agent log file path. This can be used for troubleshooting.
  • Summary tab shows the profiled application's environment variables.
  • Summary tab shows the profiled application's working directory.
  • Summary tab shows the "Command line" property for a HPROF snapshot too, if available.
  • Time measurement improvements in the profiler agent on Linux and macOS.
  • The profiler agent automatically applies the startup option skip_advanced_port_check when running under Kubernetes.
  • The profiler agent is capable of instrumenting java.lang.Thread.sleep() on all supported JVMs.
  • The profiler UI prevents JNA (Java Native Access) framework from loading a native library from PATH instead of the bundled version.
  • Attach mode: a harmless exception "Non-numeric value found - int expected" was thrown and logged after successful attach to a Java 11+ JRE instance not having the jdk.attach module.
  • Attach mode: Azul Zulu Java 8 JRE could not be attached on macOS.
  • Solaris 32-bit agents deprecated in version 2020.9 are no longer supported. Solaris 64-bit Java agents are still supported but declared deprecated.
  • Deprecations:
  • 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.
  • Solaris support. This includes the remaining 64-bit agents and the ability to run the profiler UI on this platform.
  • HP-UX support.
  • Linux ppc 32-bit support. Note that Linux ppc64 (64-bit big endian) and ppc64le (64-bit little endian) remain fully supported platforms.
  • AIX ppc 32-bit support. Note that AIX ppc64 (64-bit) remains a fully supported platform.

New in YourKit Profiler 2021.3 Build 218 EAP (Mar 12, 2021)

  • IntelliJ IDEA 2021.1 supported.

New in YourKit Profiler 2021.3 Build 200 EAP (Feb 27, 2021)

  • JVM support:
  • feature: JDK 16 supported.
  • caveat: JDK 7 support deprecated in version 2020.7 was discontinued. The last version supporting Java 7 is YourKit Java Profiler 2020.9.
  • User interface:
  • improvement: Remote connection in simple mode explicitly shows an error message if the specified host is invalid instead of informing that no profiled application is found without specifying the reason.
  • improvement: Callees list renamed to Callee list.
  • improvement: New activation wizard improves UX of profiler activation and evaluation. The wizard guides through the activation and gracefully handles corner cases when the computer has no Internet connection, is behind a proxy, etc.
  • improvement: Main menu: the sub-menu Tools | Profile was moved to the top level item Profile.
  • fix: The profiler window might not show up because of a slow enumeration of locally running processes.
  • fix: Applications matching the development tool filter were not shown in the list even if they were actually profiled, i.e. the agent had been loaded.
  • fix: In SSH configuration it was impossible to choose private SSH key from the hidden directory.
  • caveat: The "system" color theme deprecated in version 2020.7 was finally removed.
  • Telemetry:
  • feature: UI was adopted to support ZGC.
  • CPU profiling:
  • improvement: The CPU profiling mode Call counting uses atomic counters to prevent undercounting.
  • fix: "Count" column visibility issues when CPU sampling is started in live view.
  • Memory profiling:
  • feature: Profiler is now able to open IBM J9 / OpenJ9 JVM's Portable Heap Dumps.
  • feature: New action Exclude Retained Objects opens a new tab with all the objects from the current set except for the retained set of the current selection. You can find the action in the popup menus of memory views.
  • Ignoring retained objects and focusing on the rest might help finding memory leaks and analyze memory distribution.
  • feature: Class-specific object presentation: the object explorer immediately shows the library name for instances of java.lang.ClassLoader$NativeLibrary.
  • improvement: Memory snapshot loading time was greatly improved. The speedup varies from 10% to 20%.
  • improvement: Array shallow size calculation algorithm for HPROF snapshots was updated to support possible object layouts in JDK 15+.
  • improvement :The object allocation recording mode "Count allocated objects" uses atomic counters to prevent undercounting.
  • improvement: The dialog window for the action Memory | Contained Objects shows all options accessible without scrolling.
  • improvement: Other snapshot processing optimizations.
  • fix: Object explorer and Quick info might improperly show content of char[].
  • IDE integration:
  • caveat: Minimal supported IntelliJ IDEA version is now 2016.1. Support of IntelliJ IDEA 14 and 15 has been removed.
  • caveat: Minimal supported NetBeans version is now 8.2.
  • EE server support:
  • caveat Integration wizard no longer supports defunct JRun server.
  • Triggers:
  • feature: Triggers panel: show macro descriptions.
  • Events:
  • improvement: Built-in probes for file I/O and processes were changed to instrument non-native methods only. This allows the probes to work in the attach mode too, in which the instrumentation of loaded native methods is impossible.
  • Miscellaneous:
  • feature: Automatic deobfuscation: source file names are also deobfuscated. This new functionality was added for Zelix KlassMaster (ZKM) and Allatori. It is not available for other obfuscators because their obfuscation logs do not support it.
  • feature: Summary tab shows the garbage collection name in the section Garbage collection.
  • feature: Summary tab shows the profiled application's PID.
  • feature: Summary tab shows the profiled application's profiler agent log file path. This can be used for troubleshooting.
  • feature: Summary tab shows the profiled application's environment variables.
  • feature: Summary tab shows the profiled application's working directory.
  • feature: Summary tab shows the "Command line" property for a HPROF snapshot too, if available.
  • improvement: The profiler agent automatically applies the startup option skip_advanced_port_check when running under Kubernetes.
  • improvement: The profiler agent is capable of instrumenting java.lang.Thread.sleep() on all supported JVMs.
  • fix: The profiler UI prevents JNA (Java Native Access) framework from loading a native library from PATH instead of the bundled version.
  • fix: Attach mode: a harmless exception "Non-numeric value found - int expected" was thrown and logged after successful attach to a Java 11+ JRE instance not having the jdk.attach module.
  • caveat: Solaris 32-bit agents deprecated in version 2020.9 are no longer supported. Solaris 64-bit Java agents are still supported but declared deprecated.

New in YourKit Profiler 2020.9 Build 424 (Feb 24, 2021)

  • Bug fixes and performance improvements.

New in YourKit Profiler 2020.9 Build 419 (Jan 21, 2021)

  • CPU profiling: bug fixed: asynchronous CPU sampling might erroneously apply wall time settings and record wall time instead of CPU time which should always be recorded in this profiling mode.
  • IDE integration: IntelliJ IDEA: JRE bitness could not be automatically detected for an IntelliJ Platform Plugin run configuration.

New in YourKit Profiler 2020.9 Build 416 (Dec 21, 2020)

  • IDE integration: Eclipse 2020-12 (4.18) supported.
  • IDE integration: MyEclipse 2020.9 supported.
  • Update runtime.

New in YourKit Profiler 2020.9 Build 414 (Dec 11, 2020)

  • Feature: JDK 15 supported.
  • Feature: Custom probe classes can be compiled against the new dedicated jar file yjp-probe-api-redist.jar licensed under the terms described in license-redist.txt which allows its redistribution. This makes it possible for 3rd party projects and products to include custom probes in source code form together with their compile time dependencies.

New in YourKit Profiler 2020.9 Build 412 (Nov 24, 2020)

  • Agent: bug fixed: HPROF snapshot could not be captured on Red Hat OpenJDK.
  • Attach mode: added support of OpenJ9 release 0.23.0 JREs not having the "jdk.attach" module.
  • IDE integration: Eclipse 2020-09 (4.17) supported.

New in YourKit Profiler 2020.9 Build 411 (Oct 8, 2020)

  • UI: fixed bugs in runtime which might cause problems with font antialiasing.
  • Probes: bug fixed: file stream read and write events were not recorded on JDK 11+. The fix in previous build was incomplete.
  • Agent: bug fixed: possible "java.lang.Error: factory already defined" in java.net.URL.setURLStreamHandlerFactory() in the attach mode.

New in YourKit Profiler 2020.9 Build 410 (Sep 25, 2020)

  • Probes: bug fixed: file stream read and write events were not recorded on JDK 11+.
  • What-if: a new tab opens with the same view selected.
  • Automatic deobfuscation: newest Zelix KlassMaster (ZKM) log format supported.

New in YourKit Profiler 2020.9 Build 408 (Sep 18, 2020)

  • Built-in probes: DirectoryStreams: bug fixed: close event was not detected for some UnixDirectoryStream.
  • Bug fixed: attach mode might not work with Azul Zulu JDK 8.

New in YourKit Profiler 2020.9 Build 405 (Sep 15, 2020)

  • No changes so far.

New in YourKit Profiler 2019-08-b142 (Jul 21, 2020)

  • Bug fixes.

New in YourKit Profiler 2020.7 Build 339 EAP (Jul 8, 2020)

  • Feature:
  • Time axis is exported to PNG. Previous versionsexported only graph and value axis.
  • Improvement:
  • Snapshot loading time and memory footprint reduced by not pre-calculating depth to GC roots for all objects,which used to be significant for huge snapshots.Instead, the inspection "Objects with biggest distance to nearest GC root" calculates the depths on demand.The inspection now also allows to set the depth limit to speed up analysis of huge snapshot.

New in YourKit Profiler 2019-08-b141 (Jun 12, 2020)

  • Fixed problem with Eclipse plugin.

New in YourKit Profiler 2020.7 Build 311 EAP (Jun 10, 2020)

  • JVM support:
  • feature JDK 14 supported.
  • feature SapMachine OpenJDK supported.
  • User interface:
  • feature Better support of HiDPI displays. We take in account fractional scaling which is very popular nowadays. No more tiny icons and non-readable texts on 4K displays.
  • improvement Colors in bright and dark themes were tweaked to make texts more contrast and readable.
  • fix Some invisible live views might be empty or out of date, if the profiled application terminated.
  • feature New option to open snapshot immediately after capturing. Option is available in Settings | On Snapshot Capture menu.
  • feature Inline search now accepts Paste action. It works even when the search popup is not shown: pasting to a table opens the search popup and starts searching.
  • feature Useful snapshot actions from Welcome screen are also available in the popup menu of snapshot button.
  • feature Monitor Usage and Exceptions views: popup menu actions Copy, Export to... and Open in IDE were added.
  • feature Deadlocks view received an ability to ignore potential deadlock false positives i.e. methods (usually native) which legally stay in a waiting state for a long time.
  • The Deadlocks view presents for each potentially deadlocked or hanged thread a link to add it to the white list. Once the action is applied, corresponding top method will no longer be reported as a potential deadlock.
  • Ignored method patterns are stored in the file<user home>/.yjp/deadlock_white_list.txt. This file can also be edited manually or deleted to reset to defaults. Manual changes to the file are applied on the profiler UI restart.
  • 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 ui.ini.
  • Telemetry:
  • 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.
  • improvement Views with telemetry charts were cleaned up. We removed redundant splits and horizontal lines. Layout and selector controls have been reworked. Now the legend is placed at the same line as chart title, layout is responsive and adapts visible elements to the screen size. As the result, charts got more vertical space and look more clear.
  • improvement Performance of horizontal scrolling in telemetry graphs has been greatly improved.
  • fix Some charts in Performance Charts view might be missing on early connect to the profiled application.
  • fix Unintended automatic scrolling might happen when clicking on Performance Charts.
  • fix ESC did not clear selection in Threads view.
  • fix Inconsistent width of value axis in a graph group.
  • CPU profiling:
  • feature CPU flame graph: added action to copy selection to clipboard.
  • feature CPU flame graph: added action to copy stack trace to clipboard.
  • feature CPU flame graph: new action Export to... in popup menu to export flame graph to PNG image.
  • feature Snapshots with results of call counting CPU profiling mode can be compared as well. Comparison works for two call counting snapshots and for a call counting and tracing snapshot.
  • Memory profiling:
  • feature Snapshot loading capacity expanded: snapshots of up to 2,147,483,632 (~2 billion) objects can be loaded. Previous limit was twice as low (~1 billion).
  • feature New option -Dyk.object.count.limit=N specified in <user home>/.yjp/ui.ini 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 Important snapshot loading warnings are now shown to the user after opening a memory snapshot.
  • 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
  • OSGi bundle (org.apache.felix.framework.cache.BundleImpl, org.eclipse.osgi.internal.framework.EquinoxBundle) - symbolic name, version, .jar file path
  • Bundle class loader (org.apache.felix.framework.BundleWiringImpl$BundleClassLoader, 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:
  • for an OSGi bundle (org.apache.felix.framework.cache.BundleImpl, org.eclipse.osgi.internal.framework.EquinoxBundle), the bundle class loader (org.apache.felix.framework.BundleWiringImpl$BundleClassLoader, org.eclipse.osgi.internal.loader.EquinoxClassLoader) is shown as the pseudo-field <OSGi bundle loader>.
  • and vice versa, for a bundle class loader its OSGi bundle is shown as the pseudo-field <OSGi bundle>.
  • feature API: added new static method 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.
  • feature New graph layout in Memory tab. Graphs are now arranged in 3 rows of 2 graphs each.
  • feature Find | Strings by pattern... (Ctrl+F) action can be cancelled, which may be helpful when working with huge snapshots.
  • improvement The node indicating incomplete list and more... in Object explorer is now always placed last, disregarding the column sort direction.
  • improvement Expansion of the node <Retained from several objects simultaneously (don't have a dominator)> in Merged paths is faster.
  • improvement Threads view for a HPROF snapshot captured on an java.lang.OutOfMemoryError opens with the exception thread preselected.
  • improvement HPROF loading on non-Windows platforms is improved. Profiler detects the situation when a HPROF file being loaded is externally overwritten at the same time. The known case is when a full snapshot name is specified with -XX:HeapDumpPath instead 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.
  • fix Action Memory | Instances by Class... (Ctrl+N) being invoked in a class name context, might preselect improper class in the list.
  • fix Object explorer: sorting by "Name" column did not respect class loader indices.
  • fix Paths: action Expand Node Fully might cause stack overflow on a very long path.
  • caveat Memory snapshot API class com.yourkit.api.MemorySnapshot can be used on Java 11 or newer. Snapshots of older Java versions can still be analysed by performing the analysis on Java 11+.
  • IDE integration:
  • feature IntelliJ IDEA: added support of Gradle run configurations. This feature requires IDEA 2017.2 or newer.
  • feature IntelliJ IDEA: added support of Maven run configurations. This feature requires IDEA 2017.2 or newer.
  • feature NetBeans 11.3 supported.
  • 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.
  • fix Action Tools | Open in IDE (F7) no longer blocks the profiler UI in the case when the IDE cannot immediately perform the navigation being busy with other activities such as building its code caches.
  • caveat Minimal supported IntelliJ IDEA version is now 14.1.
  • EE server support:
  • feature EE server integration wizard: JBoss 7.3 supported.
  • feature EE server integration wizard: WebLogic 14c supported.
  • feature EE server integration wizard: WebSphere Liberty 20 supported.
  • feature EE server integration wizard: WildFly 18 and 19 supported.
  • Triggers:
  • fix NullPointerException might happen when adding a trigger on timer.
  • Events:
  • feature Event tables: times can be shown in microseconds instead of milliseconds with the help of the new option -Dyk.event.time=mks specified in <user home>/.yjp/ui.ini.
  • Miscellaneous:
  • improvement Improved handling of restricted docker containers: if the user home directory does not exist or is not writable, snapshots will be created in /tmp by default.
  • improvement Remote profiling with Advanced application discovery method has been improved. Profiler connects faster and consumes less traffic.
  • improvement Attach to Java 11+ instances streamlined by using the target JVM's own attach classes whenever it has "jdk.attach" module.
  • improvement Other stability improvements in agent.
  • improvement Demo application started from Welcome screen is now launched with monitor profiling started.
  • improvement Windows: the profiler launcher logging can be enabled by creating an empty file <user home>.yjpenable_launcher_log.txt, which may be helpful for troubleshooting. The log files profiler-launcher-<PID>.log are created in the profiler log directory <user home>.yjplog.
  • fix The profiler was not able to connect to a local docker container with hostname matching the hostname of the local machine.
  • fix Export from command line might produce empty output for charts.
  • fix Possible java.lang.VerifyError when tracing bytecode produced by Android R8 compiler.
  • fix IBM Java: short-running profiled processes might crash.
  • caveat Minimal supported Windows versions are now Windows 7 (desktop) and Windows Server 2008 R2 (server). Windows XP, Windows Vista, Windows Server 2003 and Windows Server 2008 are no longer supported. Affected are both the profiler UI and the profiler agent.

New in YourKit Profiler 2019-08-b138 (Apr 20, 2020)

  • IDE integration: IntelliJ IDEA 2020.1 supported.
  • Bug fixed: memory inspection "Lost SWT Controls" reported false positives for Linux snapshots.

New in YourKit Profiler 2019-08-b137 (Jan 24, 2020)

  • Agent: macOS: bug fixed: profiling data transfer from the profiler agent to the profiler client might fail for a profiled process with more than 1024 file descriptors opened.
  • Other minor bug fixes.

New in YourKit Profiler 2019-08-b136 (Dec 31, 2019)

  • Triggers: UI layout bug fixed.
  • Attach mode supported for AdoptOpenJDK OpenJ9 release 0.17.0.
  • IDE integration: improved detection of NetBeans installations on Windows and Linux.
  • Agent: bug fixed: profiling data transfer from the profiler agent to the profiler client might fail when using non-blocking sockets or in a busy network.
  • Telemetry: bug fixed: incorrect values in GC count chart.
  • Automatic deobfuscation: bug fixed: lambda class names were not deobfuscated.
  • Automatic deobfuscation: bug fixed: some method names obfuscated with ProGuard were not properly deobfuscated.

New in YourKit Profiler 2019-08-b127 (Nov 21, 2019)

  • New feature: NetBeans 11.2 is supported.
  • Bug fixed: export from command line produced empty output for charts.

New in YourKit Profiler 2019-08-b115 (Sep 23, 2019)

  • IntelliJ IDEA 2019.3 is supported.
  • IntelliJ IDEA plugin is now also installed to the plugin directories controlled with JetBrains Toolbox.
  • Probes: socket probes have been updated to support JDK 13.
  • UI: bug fixed: object explorer might freeze while showing class-specific object presentations for the first time after opening the memory snapshot.

New in YourKit Profiler 2019-08-b110 (Sep 5, 2019)

  • JDK 13 supported
  • Bug fixed: "Object Allocation Recording" chart in "Memory" tab was always empty, even with object allocation recording running

New in YourKit Profiler 2019-08-b109 (Aug 5, 2019)

  • New feature: NetBeans 11.1 is supported.
  • Bug fixed: action Memory | (Find) Objects by Field Value... incorrectly worked for type double.

New in YourKit Profiler 2019-08-b108 (Aug 1, 2019)

  • CPU profiling:
  • CPU flame graph. It is a new way to visualize entire application call tree, which allows to find performance bottlenecks quickly and easily. Execution paths which consume most of the CPU time are wider and more visible on the graph.
  • Asynchronous sampling. It is a highly requested CPU profiling mode, which provides much better accuracy of collected stack traces. It uses an experimental HotSpot API and system CPU timers. This mode is available only on macOS, Linux x86, Linux x64.
  • Startup options: new option async_sampling_cpu to start asynchronous sampling from command line.
  • Profiler API: new method com.yourkit.api.Controller.startAsyncSamplingCpu(String) to start asynchronous sampling.
  • Command line tool: new command start-async-sampling-cpu.
  • Sampling accuracy significantly improved, especially when measuring with wall time.
  • Bug fixed: call counting might not work in Java 9+.
  • Memory profiling:
  • UI: object explorer: class-specific object presentation: for instances of java.util.Optional* the value is immediately shown if available, otherwise shown as Empty.
  • UI: persistent object IDs assigned in probes or triggers (see changes in Triggers section) are now more accessible in a memory snapshot:
  • persistent object ID is shown in Object explorer, if available;
  • new action Memory | (Find) Objects by Persistent ID searches for objects with particular IDs, or for all objects with the ID assigned.
  • Bug fixed: allocated object counting might not work in Java 9+.
  • JVM support:
  • Deprecated in version 2019.1 Java 6 support has been discontinued. Therefore, YourKit Java Profiler 2019.1 is the last version supporting Java 6.
  • OpenJ9 JVMs are now visible in application table on Linux and macOS.
  • Remote attach to OpenJ9 JVM is improved.
  • IDE integration:
  • Eclipse: supported "Jetty Webapp" run configuration for Eclipse Jetty Plugin.
  • Eclipse 2019-06 (4.12) is supported.
  • IntelliJ IDEA 2019.2 is supported.
  • MyEclipse CI 2019.4 is supported.
  • User interface:
  • Extract Performance Snapshot is now accessible in the recent snapshot list.
  • Navigation drawer has been modernized to improve usability and look. As the result, profiling status is now visible at the header. Drawer is vertically scrollable. And you can also collapse it horizontally to give more space to other views with profiling results.
  • Copy File Path is now available in the "Open Snapshot" dialog.
  • Triggers:
  • New trigger action StartAsyncSamplingCpu.
  • New parameter PERSISTENT_ID for on-method-invocation trigger macros THIS, PARAMS and RETURN_VALUE available in Print* actions helps identify involved objects by assigning and reporting their persistent IDs.
  • The IDs can be seen and searched for in a memory snapshot. See changes in Memory profiling for detail.
  • Some trigger actions have been renamed.
  • Probes and inspections:
  • Built-in probe com.yourkit.probes.builtin.DirectoryStreams reworked to be consistent with other similar probes. Its default activity mode is now Auto.
  • New inspection Not closed directory streams has been implemented. The inspection finds and reports directory streams that have not been closed so far, because non-closed streams is a resource leak.
  • Miscellaneous:
  • Attach mode: improved responsiveness and reliability.
  • Attach mode: supported on AIX for Java 8+ HotSpot and OpenJ9 JVMs.
  • Linux ARM agent directory names have been changed to linux-arm-32 for ARM 32-bit (ARMv7 and higher, hard-float) and linux-arm-64 for ARM 64-bit (AArch64). Linux ARM soft-float is no longer supported.
  • Automatic deobfuscation: Profiler supports deobfuscation of MCP mapping widely used in Minecraft mod development.
  • New agent startup option skip_advanced_port_check affects the profiler agent port availability checks. When this option is specified, the agent does not explicitly reject ports used by other currently running profiled processes. Instead, the agent port availability is proved only by actually opening it. This option is useful in special environments such as Kubernetes, where PID reuse is possible. See this forum thread for detail.
  • API: caveat: a number of profiler API methods in com.yourkit.api.Controller class were renamed. Methods with old names were deprecated.
  • Snapshot comparison: bug fixed: exception difference was not available if the "Exceptions" tab has not been selected at least once in the both snapshots being compared before using the comparison action
  • Deprecations:
  • "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.
  • Deprecated methods from com.yourkit.api.Controller are scheduled for removal in the next release of YourKit Java Profiler.

New in YourKit Profiler 2019-8-B73 EAP (Jul 4, 2019)

  • CPU profiling:
  • CPU flame graph. It is a new way to visualize entire application call tree, which allows to find performance bottlenecks quickly and easily. Execution paths which consume most of the CPU time are wider and more visible on the graph.
  • Asynchronous sampling. It is a highly requested CPU profiling mode, which uses an experimental HotSpot API and system CPU timers. Asynchronous sampling provides much better accuracy of collected stack traces. This mode is available only on macOS, Linux x86, Linux x64.
  • Startup options: new option sampling_async_cpu to start asynchronous sampling from command line.
  • Profiler API: new method com.yourkit.api.Controller.startCPUSamplingAsyncCPU(String) to start asynchronous sampling.
  • Command line tool: new command start-cpu-sampling-async-cpu.
  • Triggers: new trigger action StartCpuSamplingAsyncCpu.
  • Sampling accuracy significantly improved, especially when measuring with wall time.
  • Bug fixed: call counting might not work in Java 9+.
  • JVM support:
  • Deprecated in version 2019.1 Java 6 support has been discontinued. Therefore, YourKit Java Profiler 2019.1 is the last version supporting Java 6.
  • OpenJ9 JVMs are now visible in application table on Linux and macOS.
  • Remote attach to OpenJ9 JVM is improved.
  • Memory profiling:
  • Bug fixed: allocated object counting might not work in Java 9+.
  • UI: object explorer: class-specific object presentation: for instances of java.util.Optional* the value is immediately shown if available, otherwise shown as Empty.
  • IDE integration:
  • Eclipse: supported "Jetty Webapp" run configuration for Eclipse Jetty Plugin.
  • Eclipse 2019-06 (4.12) is supported.
  • Miscellaneous:
  • Attach: improved responsiveness and reliability.
  • Extract Performance Snapshot is now accessible in the recent snapshot list.
  • Copy File Path is now available in the "Open Snapshot" dialog.
  • Linux ARM agent directory names have been changed to linux-arm-32 for ARM 32-bit (ARMv7 and higher, hard-float) and linux-arm-64 for ARM 64-bit (AArch64). Linux ARM soft-float is no longer supported.
  • Automatic deobfuscation: Profiler supports deobfuscation of MCP mapping widely used in Minecraft mod development.

New in YourKit Profiler 2019-01-b133 (Jun 8, 2019)

  • macOS application is now notarized to meet macOS 10.14.5 security requirements

New in YourKit Profiler 2019-01-b127 (May 9, 2019)

  • IDE integration: NetBeans 11 supported
  • Bug fixed: hyphen (-) was not accepted in the proxy host name in "Configure proxy" and other places
  • Startup options periodichprof and usedmemhprof might not work in several conditions

New in YourKit Profiler 2019-01-b117 (Apr 22, 2019)

  • Bug fixed: Java 12.0.1 might fail loading the profiler agent
  • Improvements and fixes in Eclipse OpenJ9 OpenJDK 12 support

New in YourKit Profiler 2019-01-b109 (Feb 1, 2019)

  • JVM support:
  • 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.
  • Zulu JDK from Azul is supported.
  • CPU profiling:
  • High-level statistics: bug fixed: percents might exceed 100%.
  • 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 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 disable_heap_sampling.
  • 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 -Dyk.dc.external-process=true in <user home>/.yjp/ui.ini.
  • 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.
  • Profiler API: new methods com.yourkit.api.Controller.getTotalCreatedObjectCount() and 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 print-alloc-object-count and print-alloc-object-size.
  • Command line tool: new command start-alloc-recording starts object allocation recording with custom record-each and size-limit parameters.
  • Telemetry:
  • Bug fixed: stack trace panel does not refresh when thread filter is used.
  • Bug fixed: telemetry values might be improperly formatted in non-US locales.
  • Event recording with probes:
  • com.yourkit.probes.builtin.Databases probe overhead has been significantly reduced for some loads.
  • Hibernate version 5.4 is supported.
  • EclipseLink version 2.7 is supported.
  • OpenJPA version 3.0 is supported.
  • MongoDB Synchronous driver version 3.9 is supported.
  • MongoDB Async and Reactive Streams drivers are supported.
  • HBase Java client version 2.1 is supported.
  • IDE integration:
  • MyEclipse CI 2018.12 is supported.
  • Apache NetBeans 10 is supported.
  • IntelliJ IDEA plugin now uses properly scalable SVG icons when running in IDEA 2018.1 or newer. In older IDEA versions not supporting SVG icons the plugin will keep using bitmap icons.
  • User interface:
  • Improved support of HiDPI screens on Linux and Windows.
  • Snapshot annotation, a free form snapshot description, is now easily accessible in the recent snapshot list, as well as in the "Open Snapshot" dialog.
  • 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.
  • Horizontal scrolling with two fingers gesture now works on Windows.
  • The profiler UI now shows time in 12 hour (AM/PM) or 24 hour format depending on the system settings.
  • "Open Snapshot" dialog now shows and allows to open a snapshot stored in a GZIP (.gz) or ZIP (.zip) archive.
  • Bug fixed: "Open Snapshot" dialog: wrong tooltip position.
  • Bug fixed: the monitor profiling live view expanded/collapsed by itself on update.
  • Bug fixed: Summary tab: no properties are retrieved for HPROF dumps of Java 10+.
  • 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.
  • Bug fixed: expansion states of nodes in Application list on Welcome screen is not saved.
  • Bug fixed: profiler UI failed with internal error being started on a machine with invalid font metrics.
  • Miscellaneous:
  • The profiler UI now requires a 64-bit JVM to run. The profiler API to programmatically open memory snapshots requires a 64-bit Java too. However, profiling of both 32-bit and 64-bit JVMs is still fully supported, and the console wizards, for Java EE server integration and attach, can run on either 32-bit or 64-bit JVM.
  • 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.
  • Caveat: snapshot file annotation is no longer offered for .hprof snapshots, only for the profiler-format .snapshot files. The HPROF format does not allow arbitrary records, and extending a .hprof file with custom records would make it invalid for 3rd party tools.
  • Local network address resolution has been improved to properly handle machines with misconfigured or absent "localhost" host name.

New in YourKit Profiler 2018-05-b100 EAP (Jan 24, 2019)

  • Event recording with probes: MongoDB Async and Reactive Streams drivers are supported.

New in YourKit Profiler 2018-05-b86 EAP (Jan 4, 2019)

  • Bug fixes

New in YourKit Profiler 2018-05-b85 EAP (Jan 4, 2019)

  • New profiler API methods com.yourkit.api.Controller.getTotalCreatedObjectCount() and com.yourkit.api.Controller.getTotalCreatedObjectSize()provide basic object allocation recording statistics.The same values can also be obtained with the command line tool'snew commands print-alloc-object-count and print-alloc-object-size.
  • Bug fixes

New in YourKit Profiler 2018-05-b82 EAP (Dec 27, 2018)

  • Bug fixes

New in YourKit Profiler 2018-05-b68 EAP (Dec 18, 2018)

  • Attach mode: bug fixes

New in YourKit Profiler 2018-05-b63 EAP (Dec 11, 2018)

  • Console wizards: bug fixed: internal diagnostic messages were printed to the console instead of being written to the log
  • Attach mode: improved handling of Java 11

New in YourKit Profiler 2018.04-b87 (Nov 24, 2018)

  • IDE integration: IntelliJ IDEA 2018.3 supported
  • Memory profiling: bug fixed: opening of some particular memory snapshots might crash the profiler UI
  • Bug fixed: IBM JVM might terminate on attempt to start CPU tracing in some rare circumstances

New in YourKit Profiler 2018-05-b56 EAP (Nov 8, 2018)

  • Java 11 is supported
  • IBM's AdoptOpenJDK.netOpenJDK 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 objectswithout using bytecode instrumentation.
  • Not instrumenting bytecode for object allocation recordingreduces 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=truein <user home>/.yjp/ui.ini.
  • The external process approach was introduced many years ago and was intended to help loading memory snapshotsto 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 alarmfor 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 annotationis now easily accessible in the recent snapshot list,as well as in the "Open Snapshot" dialog.
  • Local network address resolution was improvedto properly handle machines with misconfigured or absent "localhost" host name.
  • "Open Snapshot" dialog now shows and allows to open a snapshotstored 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 recordingif 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, oropening or exporting a snapshot captured on such platformnow 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 platformssupported as long as it practicable.

New in YourKit Profiler 2018.04-b83 (Sep 13, 2018)

  • Remote profiling: JSch SSH library upgraded to version 0.1.54

New in YourKit Profiler 2018.04-b82 (Aug 31, 2018)

  • IDE integration: Apache NetBeans 9.0 is supported
  • Welcome screen: list of applications: for applications with the profiler agent loaded the tooltip now also shows the agent port number among other information
  • Remote profiling: bug fixed: SSH connection to AIX didn't work

New in YourKit Profiler 2018.04-b81 (Aug 1, 2018)

  • IDE integration: Eclipse 4.8 Photon is supported
  • IDE integration: IntelliJ IDEA 2018.02 is supported

New in YourKit Profiler 2018.04-b80 (Jul 17, 2018)

  • IDE integration: bug fixed: Java bitness detector might fail for OpenJDK
  • Remote profiling: bug fixed: browsing remote file system might crash

New in YourKit Profiler 2018.04-b75 (Jun 29, 2018)

  • UI: Bug fixed: graph vertical axis might show incorrect values
  • Bug fixed: attach might fail on some platforms to some JVMs

New in YourKit Profiler 2018.04-b73 (Jun 29, 2018)

  • Agent: bug fixed: built-in probe AsyncChannels might not load on Java 9+
  • Probes: eliminated warning "WARNING: Illegal reflective access by com.yourkit.probes.builtin.Processes to field java.lang.ProcessImpl.pid" when running on Java 10
  • Welcome screen: more IntelliJ IDEA helper processes are filtered out in the list of local applications when the "Hide development tools" filter is selected
  • Adding experimental support of OpenJDK 9/10 with Eclipse OpenJ9 JVM which is currently a beta software developed by IBM and the Eclipse Foundation. YourKit does not officially support it yet, please work with it at your own discretion. If you want to profile OpenJ9, please always use the latest OpenJ9 nightly build, as well as the latest YourKit Java Profiler build available at the moment to ensure all possible fixes are applied.
  • Bug fixes

New in YourKit Profiler 2018.04-b71 (May 28, 2018)

  • Summary tab: bug fixed: no snapshot properties were shown for HPROF snapshots of Java 10 and newer
  • Memory profiling: bug fixed: object explorer didn't show size and entries for some collections in memory snapshots of Java 10 and newer
  • Bug fixed: offline export was broken

New in YourKit Profiler 2018.04-b70 (May 23, 2018)

  • UI: telemetry: bug fixed: stack traces of same named threads might cause an internal error

New in YourKit Profiler 2018.04-b67 (May 18, 2018)

  • Remote profiling: bug fixed: invalid "Unsupported OS" error when connecting to some remote hosts
  • Telemetry: bug fixed: currently selected thread in the stack traces would not restore on clicking another time point

New in YourKit Profiler 2018.04-b66 (May 18, 2018)

  • UI: bug fixed: a memory leak after closing a snapshot tab
  • UI: bug fixed: an internal error happened while hovering or clicking table elements in "Events by Table" under certain circumstances
  • UI: bug fixed: graphs in "Performance charts" might disappear after size increase
  • UI: telemetry views: regression: copy stack traces to clipboard action produced verbose output no longer parsable by IntelliJ IDEA

New in YourKit Profiler 2018.04-b64 (May 18, 2018)

  • IDE integration: bug fixed: profiler UI didn't automatically launch on "Profile" action
  • Bug fixed: selecting a time range in "Performance charts" might lead to internal error

New in YourKit Profiler 2018.04-b60 (Apr 30, 2018)

  • Profiling in Docker container:
  • You can now download dedicated compact bundle containing only files needed in Docker container.
  • Agent dependencies on glibc were relaxed, which is important for Alpine Linux based containers.
  • New dedicated Help topic provides step by step instructions on how to profile in a container.
  • Remote profiling:
  • Remote and local applications are displayed together in the "Monitor Applications" list on Welcome screen. You can monitor CPU usage of remote applications in real time.
  • New Advanced method for secure connection with a remote machine using SSH protocol has been implemented.
  • Added ability to attach the profiler agent to a remote Java process started without the profiler agent directly from the profiler UI.
  • The remote connection dialog allows to set up a multi-hop SSH tunnel through any number of intermediate machines.
  • Due to security reasons the startup option listen has been reworked and accepts now the following values:
  • Most security, the default option: listen=localhost binds the profiler agent socket to localhost only. This will disable a direct remote connection to the agent via <host>:<port>. Connection to the profiler agent will be possible via port forwarding e.g. an SSH tunnel.
  • Easy access: listen=all opens the profiler agent socket on all network interfaces. A remote connection to the agent will be possible directly via <host>:<port>. Note that access to the port can be additionally restricted with a firewall.
  • Advanced: listen=<IP or host> binds the profiler agent socket to particular network interface.
  • Please note that listen=localhost is now the default (the old default was equal to listen=all), and option onlylocal is deprecated.
  • Also note that the startup option port is now the only way to specify the agent port because listen no longer duplicates this functionality.
  • CPU profiling:
  • The profiler is now able to open HPROF dumps with CPU samples which are produced by running java -agentlib:hprof=cpu=samples,format=b <...> or java -Xrunhprof:cpu=samples,format=b <...>.
  • Telemetry:
  • Threads view now shows per-thread CPU usage graphs.
  • Thread header elements in Threads view are vertically aligned to improve usability.
  • You can click on particular event in Threads view to see its stack trace.
  • Threads view now allows to change scale.
  • New "Fit to Width" scaling option has been added in Threads view.
  • Searchable stacks are in all telemetry views.
  • Java EE integration:
  • Integration wizard with Java EE servers has been refined and reworked. New step has been added to reflect new connectivity options.
  • IDE integration:
  • IntelliJ IDEA 2018 is supported.
  • IDE integration wizard has been reworked. Separate MyEclipse option was added.
  • When a newer build is installed, existing IDE integrations are automatically updated to use the newest profiler agents without the user interaction whenever possible. Previously it was always offered to re-run the IDE integration wizard, now the wizard should run only if the plugin and agent changes cannot be applied automatically.
  • User interface:
  • Welcome screen has been refined and reworked. All possible actions enabling different profiling scenarios are available in one place under the section "Get Started with Profiler".
  • Horizontal scrolling is now possible with mouse wheel and two fingers gesture in telemetry graphs and tables.
  • Auto-scrolling in tables and in Threads view has been reworked to improve user experience in live profiling sessions.
  • Stack trace presentation has been improved in all views, e.g. quick info, deadlocks.
  • It is now possible to hide hints.
  • On macOS profiler uses on-screen menu bar in Dark theme too.
  • JetBrains OpenJDK is bundled to improve UI font rendering quality on macOS and Linux.
  • Better filtering of development tools in the "Monitor Applications" section.
  • Miscellaneous"
  • Java 10 is supported.
  • If the user allows, the profiler now may collect anonymous UI usage statistics to help YourKit improve user experience in future versions.
  • Startup option port now allows to specify a port range too. The syntax is port=<min_port>-<max_port>.
  • Profiler is now distributed as .dmg image for macOS.
  • .snapshot files are associated with the profiler application on macOS.
  • Profiler always uses integrated video card instead of switching to the discrete GPU if the machine has multiple GPUs.
  • Profiler agent detection was improved on HP-UX.
  • Profiler UI now may run on Java 9 and Java 10, although we still recommend to run it on Java 8.
  • Profiler gracefully handles inability to attach to IBM Java. It now shows a user-friendly message on attempt to attach to an IBM Java process started without the agent. This operation is still impossible due to lack of capabilities in IBM Java, and IBM Java can be profiled only by starting with the agent.
  • On Linux, the profiler launcher can easily be found in GNOME or Unity shells. The profiler now automatically creates .desktop files after its first run.
  • Bug fixes and performance improvement.

New in YourKit Profiler 2018.04-b59 EAP (Apr 28, 2018)

  • Bug fixes

New in YourKit Profiler 2018.04-b57 EAP (Apr 24, 2018)

  • [new] Horizontal scrolling with mouse wheel and two fingers gesture in tables.
  • Bug fixes

New in YourKit Profiler 2018.04-b56 EAP (Apr 23, 2018)

  • Performance improvements in "Threads" view.
  • Bug fixes.

New in YourKit Profiler 2018.04-b53 EAP (Apr 17, 2018)

  • Improved auto-scrolling to selected thread in "Threads" view.
  • Refinement of "Welcome" screen layout.
  • Bug fixes and performance improvements.

New in YourKit Profiler 2018.04-b51 EAP (Apr 11, 2018)

  • Better filtering of development tools in "Monitor Application" section on "Welcome" screen
  • Bug fixes

New in YourKit Profiler 2018.04-b50 EAP (Apr 9, 2018)

  • [new] IDE integration: IntelliJ IDEA 2018 supported
  • [new] Dedicated docker zip now includes the agent for ppc64le too
  • [new] Horizontal scrolling with mouse wheel and two fingers gesture in telemetry graphs
  • [regression] Tracing was broken in attach mode
  • Bug fixes

New in YourKit Profiler 2018.04-b48 EAP (Mar 21, 2018)

  • Java 10 supported
  • Welcome screen: all possible actions enabling different profiling scenarios are available in one place under the section "Get Started with Profiler"
  • Welcome screen: local and remote profiling applications are shown in real time in the section "Monitor Applications"
  • Remote profiling: added ability to attach the profiler agent to a remote Java process started without the profiler agent directly from the profiler UI
  • Remote profiling: multihop SSH tunnels: the remote connection dialog allows to set up an SSH tunnel through any number of intermediate machines
  • New feature: Threads view now shows per-thread CPU usage graphs
  • Threads view: to improve visibility, thread header elements are vertically aligned
  • Threads view: ability to see the stack trace for particular event
  • Threads view: ability to change scale
  • Telemetry: new graph scaling option "Fit to Width"
  • Searchable stacks in telemetry
  • CPU HPROF dumps supported. The profiler is now able to open HPROF dumps with CPU samples which are produced by running java -agentlib:hprof=cpu=samples,format=b <...> or java -Xrunhprof:cpu=samples,format=b <...>
  • UI: stacked hints and messages
  • UI: reworked IDE integration
  • UI: reworked local server integration
  • Improved stack trace presentation in different views: quick info, deadlocks, etc.
  • If the user allows, the profiler now may collect anonymous UI usage statistics to help YourKit improve user experience in future versions
  • Startup option port was extended to allow a specification of a port range too. The syntax is port=<min_port>-<max_port>.
  • Simplified and improved profiling in Docker containers:
  • dedicated compact download bundle containing only files needed in docker reduces container size and build time
  • agent dependencies on glibc relaxed, which is important for Apine Linux based containers
  • new dedicated Help topic provides step by step instructions on how to profile in a container
  • Also, the remote connection dialog now allows to specify the remote agent port range.
  • Agent: improved control of the profiler agent connectivity options. The startup option listen has been extended.
  • Most security, the default option: listen=localhost binds the profiler agent socket to localhost only. This will disable a direct remote connection to the agent via <host>:<port>. Connection to the profiler agent will be possible via port forwarding e.g. an SSH tunnel.
  • Easy access: listen=all opens the profiler agent socket on all network interfaces. A remote connection to the agent will be possible directly via <host>:<port>. Note that access to the port can be additionally restricted with a firewall.
  • Advanced: listen=<IP or host>[:<port>] binds the profiler agent socket to particular network interface
  • Please note that listen=localhost is now the default (the old default was equal to listen=all), and option onlylocal is deprecated.
  • HP-UX: agent detection improved
  • Profiler UI now may run on Java 9 too, although we still recommend to run it on Java 8
  • UI: a hint panel for a slave view can be hidden
  • Attach: gracefully handle inability to attach to IBM Java. The profiler now shows appropriate error messsage to the user on attempt to attach to an IBM Java process started without the agent. This operation is still impossible due to lack of capabilities in IBM JVM, and IBM Java can be profiled only by starting with the agent.

New in YourKit Profiler 2017.02-b75 (Feb 9, 2018)

  • Bug fixed: Databases probe could cause excessive socket creation in Neo4j JDBC driver
  • Simplified profiling in docker containers based on Alpine Linux by relaxing the profiler agent's dependencies on glibc. Now it is enough to have libc6-compat installed in the container (RUN apk add --no-cache libc6-compat in Dockerfile) instead of installing full glibc as was required for some base images.

New in YourKit Profiler 2017.02-b71 (Jan 22, 2018)

  • Bug fixed: triggers: profiling modes switched in the on-exit trigger JVMExitListener did not affect whether the automatic shutdown snapshot should be captured, and of which kind.
  • Bug fixed: possible internal error in "Deadlocks" tab.
  • Improvement: better detection of snapshots captured automatically on event.

New in YourKit Profiler 2017.02-b68 (Jan 22, 2018)

  • Scalability: added an option to disable retrieval of object instance count by class statistics when capturing performance snapshots (available in performance snapshots under "Memory", "Memory & GC Telemetry") which in some cases may take noticeable time depending on heap size.
  • To disable the statistics when capturing performance snapshots from the profiler UI, add the line -Dyk.instance.count.on.perf.snapshot.capture=false to <user home>/.yjp/ui.ini
  • To disable the statistics when capturing performance snapshots via API or triggers, specify the agent startup option _no_instance_count_on_perf_snapshot_capture

New in YourKit Profiler 2017.02-b67 (Nov 8, 2017)

  • [macOS] Fix broken on screen menu bar under latest Java 8u152.

New in YourKit Profiler 2017.02-b66 (Sep 6, 2017)

  • Scalability improvement: the stack traces panel shown on clicking a telemetry graph could take much time to appear or update for a hugh number of threads (hundreds or thousands), leading to a freezing UI. To tackle this problem the number of shown threads in the stack traces panel is now by default limited to 300. If the limit is reached, please apply the thread filter in the UI to see particular threads only, or increase the limit by specifying -Dyk.thread.count.limit=<custom limit> in <user home>/.yjp/ui.ini.
  • Bug fixes

New in YourKit Profiler 2017.02-b65 (Aug 30, 2017)

  • Bug fixed: memory snapshot comparison broken with duplicate entries

New in YourKit Profiler 2017.02-b63 (Jul 4, 2017)

  • Bug fixed:
  • automatic update displayed improper error message when unavailable

New in YourKit Profiler 2017.02-b61 (Jun 8, 2017)

  • Bug fixes and performance improvements.

New in YourKit Profiler 2017.02-b59 (May 2, 2017)

  • IDE integration: IntelliJ IDEA 2017 supported
  • Bug fixes

New in YourKit Profiler 2017.02-b57 (Apr 5, 2017)

  • Agent: new startup option _enable_thread_gc enables thread metadata cleanup. This helps to address the issue of a memory leak in applications constantly starting short living threads. For detail see this thread.
  • Bug fixes and performance improvements

New in YourKit Profiler 2017.02-b55 (Mar 15, 2017)

  • Bug fixes

New in YourKit Profiler 2017.02-b53 (Mar 10, 2017)

  • Bug fixes and performance improvements

New in YourKit Profiler 2017.02-b50 (Mar 10, 2017)

  • Fixed navigation problem from call tree to "Events" view.

New in YourKit Profiler 2017.02-b45 (Feb 11, 2017)

  • USER INTERFACE:
  • New feature: ability to expand particular filtered branches in call tree views. Expansions of filtered calls can be undone one by one by using the popup menu action "Undo" or Ctrl+Z.
  • New action "Show File in Explorer" on Windows, "Show File in Finder" on Mac OS X, and "Show in File Manager" on Linux and other platforms superseded previously existing action "Open Containing Folder". This new action not only opens corresponding directory in the OS-specific file manager, but also selects the target file in it.
  • Native thread ID is now shown as a decimal number instead of hex. Also, the ID was improperly obtained on Windows and Mac OS X: an internal system call ID was used instead of a "presentable" thread ID as seen in system logs or the platforms' specific tools.
  • CPU PROFILING:
  • Call tree view directly shows web, database, JNDI events under the method call where they happened. You can open the longest individual event by clicking the hyperlink. As the result, the event will reveal in "Events".
  • CPU tracing result accuracy increased in some corner cases thanks to improved time measurement algorithms
  • Action "CPU | View Method By Name..." (Ctrl+Shift+N): currently selected method is now preselected in the chooser popup
  • Own time column in call tree views was removed as redundant. To return it specify -Dyk.own.time.column=true in <user home>/.yjp/ui.ini.
  • MEMORY PROFILING:
  • Optimization: up to 30% improvement of memory snapshot loading time on multiprocessor machines
  • Object explorer: key and value are immediately shown for map entries. Also, the action "Open map keys, values, entries in a new tab" available for map objects now by default offers to open entries, not keys.
  • Object explorer: class loader and, if available, web application information is immediately shown for instances of java.lang.Class
  • Object explorer: class loader presentation improved: if there are multiple class loaders that are instances of the same class (e.g. java.net.URLClassLoader), they are indicated in the UI with an index starting with 1, which allows to easily distinct them. The index itself does not have any physical meaning.
  • Object explorer: class-specific object presentation: java.time.* supported
  • Object explorer: class-specific object presentation: GNU Trove library collections supported
  • Object explorer: class-specific object presentation: java.awt.Color supported: color components (red/green/blue/alpha) as well as the color itself are presented
  • Object explorer: empty strings are indicated with "" to distinct them from strings with unknown content for which no text is displayed. Previously, there was no text shown in both cases. Note: the content is unknown for unreachable strings in *.snapshot files due to a limitation of JVMTI (JVM profiling API) that provides no access to reference fields of unreachable objects. There is no problem for HPROF snapshots which presents references for all objects including unreachable.
  • Class list view now shows separate entries for classes with the same name but loaded in different loaders, as well as presents class loader information for each class loaded not with the system class loader.
  • New action "Memory | Objects by Field Value... (Ctrl+Shift+F)" opens in a new tab objects having particular primitive field values. This allows to find objects of interest among e.g. many other instances of a class. You can specify the field name and exact value or its minimum and maximum value limits. The action can work with all snapshot objects or with objects presented in a current tab.
  • Object allocation recording: toolbar has new button to clear recorded object allocations and continue recording
  • Object allocation recording: action "Memory | View Method By Name..." (Ctrl+Shift+N): currently selected method is now preselected in the chooser popup
  • New inspection "Classes with same name" finds identically named classes loaded in multiple class loaders
  • New inspection "Serializable classes extending non-serializable"
  • New inspection "Non-serializable attributes in HTTP session"
  • New inspection "Not closed resources pending finalization" helps finding resource leaks caused by file streams, random access files, sockets, NIO channels that have not been closed after use
  • New inspection "Thread local variables" helps finding potential memory leaks caused by using java.lang.ThreadLocal
  • New inspection "Inefficient primitive data type usage" finds situations when unnecessarily large primitive data type is used to store values that might fit a smaller data type instead, e.g. when long is used instead of int, or int instead of byte. Such usage might result in memory waste. The inspection analyses long, int, short as well as long[], int[], short[] instance fields per class, as well as standalone long[], int[], short[] arrays.
  • New inspection "Collections with biggest storage overhead" finds collections with biggest memory usage overhead of storing their elements.
  • Inspection "Non-serializable objects referenced from Serializable" improved: number of false positives reduced
  • Set description language: added tags to specify all objects of particular reachability scope: <strong-reachable/>, <weak-soft-reachable/>, <pending-finalization/>, <unreachable/>
  • If the property -Dyk.tmp.dir=<directory> is specified it is also respected while calculating the dominator tree which is performed when a memory snapshot is being loaded
  • TELEMETRY:
  • Threads view reworked, now shows events alongside thread states
  • Threads view: new state "Waiting in native" is shown for some known methods instead of "Running" which is reported for them by the JVM
  • Threads view: "Started" property shows when particular thread started. Sort by this property to present threads in the order of their appearance.
  • Threads view: "Ended" property shows whether particular thread ended, and if it did, when. Sort by this property to present threads in the order of their termination.
  • New feature: ability to export telemetry graph to .png. You can export entire graph or only its visible part. When exporting a wide graph you have an option to split it to pieces of arbitrary width to limit the resulting image width.
  • New feature: ability to clear the telemetry charts. There is a new toolbar button, new profiler API method com.yourkit.api.Controller.clearCharts(), and a new command line tool command.
  • New startup options to control exception telemetry:
  • exceptions=on enables exception events in the JVM and immediately starts recording the exception telemetry.
  • This is the default mode on Sun/Oracle HotSpot, OpenJDK, JRockit (i.e. non-IBM JVMs).
  • exceptions=off enables exception events in the JVM but does not immediately start recording the exception telemetry that can instead be recorded later in runtime.
  • exceptions=disable fully disables exception events in the JVM to totally eliminate corresponding overhead.
  • This is the default mode on IBM JVMs because the overhead is significant.
  • Caveat: in previous versions of the profiler the startup option disableexceptiontelemetry, being specified explicitly or implied with disableall, worked for the non-IBM JVMs as the newly introduced option exceptions=off. In this version disableexceptiontelemetry is still accepted and is equal to exceptions=disable.
  • EVENT RECORDING WITH PROBES:
  • "Java EE statistics" view: added ability to open the longest event in "Events"
  • New inspection "Queries can be prepared" finds similar SQL queries that can potentially be optimized by using a prepared statement
  • New inspection "Statements opened but not used"
  • JAVA EE INTEGRATION:
  • Java EE server integration wizard: JBoss/WildFly domain mode supported
  • IDE INTEGRATION:
  • IntelliJ IDEA 2016.3 supported
  • NetBeans 8.2 supported
  • Eclipse Neon supported
  • Eclipse and IntelliJ IDEA: if multiple projects are opened in the IDE, the "Open in IDE" action opens the symbol in appropriate one by matching the IDE's project name. This works for applications started from within the IDE with the "Profile" action, as well as for captured snapshots of such applications.
  • MISCELLANEOUS:
  • Attach mode: the initial pause significantly decreased by not automatically marking an object generation
  • Attach mode: the bytecode instrumentation of classes loaded before the agent attached, which happens when CPU tracing or object allocation recording start for the first time, processes classes in batches instead of processing all at once, thus replacing one long stop-the-world pause with a series of shorter pauses
  • Agent: to reduce profiling overhead in profiled applications running many threads, the automatic deadlock detector can be turned off by specifying the startup option deadlocks=off (implied by disableall)
  • Agent: web interface: new action "Dump Threads"
  • Agent: optimization: reduced overhead in profiled applications intensively starting new threads
  • Agent: intrinsic atomic operations are employed on HP-UX too, thus improving performance
  • Windows installer: the version of NSIS was upgraded to improve user experience on latest Windows versions
  • Windows installer: improved diagnostics of insufficient disk space on target drive
  • Windows: the profiler agent library yjpagent.dll is digitally signed.
  • Export: size of generated HTML files significantly reduced
  • Remote profiling: bug fixed: the profiler did not detect situations when the profiled application quickly restarted and continued to listen on the same agent port, erroneously treating the profiling results coming from the new instance as belonging to the old instance. This might cause different sorts of data inconsistencies and errors in UI.
  • Automatic deobfuscation: yGuard: bug fixed: some class name were not properly deobfuscated
  • Optimization: snapshot loading speed was greatly improved for performance snapshots
  • Other bug fixes

New in YourKit Profiler 2016.06-b41 EAP (Feb 7, 2017)

  • Bug fixes and performance improvements

New in YourKit Profiler 2016.06-b40 EAP (Feb 1, 2017)

  • Threads view: actions to scroll to thread start and to thread end
  • Bug fixes and performance improvements

New in YourKit Profiler 2016.06-b39 EAP (Jan 27, 2017)

  • Bug fixes and performance improvements

New in YourKit Profiler 2016.06-b38 EAP (Jan 23, 2017)

  • Threads view: improvements
  • Bug fixes

New in YourKit Profiler 2016.06-b37 EAP (Jan 16, 2017)

  • Threads view: improvements
  • Events: special icons for web, database, JNDI and other events
  • Bug fixed: java.lang.ClassCastException in the built-in probe Servlets

New in YourKit Profiler 2016.02-b46 (Jan 16, 2017)

  • Bug fixed: java.lang.ClassCastException in the built-in probe Servlets

New in YourKit Profiler 2016.06-b36 EAP (Jan 11, 2017)

  • "Threads" view reworked, now shows events alongside thread states
  • Attach mode: the instrumentation of classes loaded before the agent attached, which happens when CPU tracing or object allocation recording start for the first time, processes classes in batches instead of processing all at once, thus replacing one long stop-the-world pause with a series of shorter pauses

New in YourKit Profiler 2016.02-b44 (Dec 22, 2016)

  • Enter license dialog: added support of HTTP proxies that require the user/password authentication
  • Database probes: bug fixes

New in YourKit Profiler 2016.06-b35 EAP (Dec 22, 2016)

  • "Java EE statistics" view: added ability to open the longest event in "Events"

New in YourKit Profiler 2016.06-b34 EAP (Dec 22, 2016)

  • Events: new inspection "Queries can be prepared" finds similar SQL queries that can potentially be optimized by using a prepared statement.

New in YourKit Profiler 2016.06-b33 EAP (Dec 9, 2016)

  • Events: new inspection "Statements opened but not accessed"
  • Bug fixes

New in YourKit Profiler 2016.06-b32 EAP (Nov 23, 2016)

  • Object explorer: class-specific object presentation: GNU Trove library collections supported
  • Bug fixes

New in YourKit Profiler 2016.06-b31 EAP (Nov 15, 2016)

  • Memory profiling: Class list view now shows separate entries for classes with the same name but loaded in different loaders, as well as presents class loader information for each class loaded not with the system class loader.
  • Memory profiling: class loader presentation improved: if there are multiple class loaders that are instances of the same class (e.g. java.net.URLClassLoader), they are indicated in the UI with an index starting with 1, which allows to easily distinct them. The index itself does not have any physical meaning.

New in YourKit Profiler 2016.06-b30 EAP (Nov 10, 2016)

  • Memory profiling: new inspection "Inefficient primitive data type usage" finds situations when unnecessary large primitive data type is used to store values that might fit a smaller data type instead, e.g. when long is used instead of int or int instead of byte. Such usage might result in memory waste. The inspection analyses long, int, short as well as long[], int[], short[] instance fields per class, as well as standalone long[], int[], short[] arrays.
  • Memory profiling: new inspection "Collections with biggest storage overhead" finds collections with biggest memory usage overhead of storing their elements.
  • Mac OS X: Java parameters for the profiler UI are now specified in ~/.yjp/ui.ini just like on all other supported platforms; previously it was required to modify the application's Info.plist to change the parameters.
  • Optimization: snapshot loading speed was greatly improved for performance snapshots .

New in YourKit Profiler 2016.06-b28 EAP (Oct 13, 2016)

  • Object explorer: class-specific object presentation: java.time.* support improved
  • Automatic deobfuscation: yGuard: bug fixed: some class name were not properly deobfuscated
  • Other bug fixes

New in YourKit Profiler 2016.06-b27 EAP (Oct 10, 2016)

  • Java EE server integration wizard: JBoss / WildFly domain mode supported
  • New feature: ability to export telemetry graph to .png. You can entire graph or only its visible part. When exporting a wide graph you have an option to split it to pieces of arbitrary width to limit the resulting image width.
  • Bug fixed: exception in Web and JNDI views of "Java EE statistics"

New in YourKit Profiler 2016.06-b26 EAP (Oct 10, 2016)

  • CPU profiling: web, database, JNDI events are directly shown in call tree views under the method call where they happened
  • IDE integration: NetBeans 8.2 supported
  • Memory profiling: new inspection "Serializable classes extending non-serializable"

New in YourKit Profiler 2016.06-b25 EAP (Oct 10, 2016)

  • Bug fixes: assertion failed when expanding some nodes in CPU call tree

New in YourKit Profiler 2016.06-b24 EAP (Oct 10, 2016)

  • Threads view: new column "Ended" shows thread end times
  • Expansion of filtered calls (introduced in build 23) can be undone with the popup menu action "Undo" or Ctrl+Z
  • CPU profiling: UI: own time column in call tree views was removed as redundant. To return it specify -Dyjp.own.time.column=true in /.yjp/ui.ini.
  • Memory profiling: "Non-serializable objects referenced from Serializable" inspection improved: number of false positives reduced
  • Memory profiling: new inspection "Non-serializable attributes in HTTP session"
  • Memory profiling: new inspection "Not closed resources pending finalization" helps finding potential resource leaks. This inspection works for file streams, random access files, sockets, NIO channels.
  • Memory profiling: new inspection "Thread local variables" helps finding potential memory leaks caused by using java.lang.ThreadLocal

New in YourKit Profiler 2016.02-b43 (Oct 10, 2016)

  • Windows: launcher: bug fixed: the profiler UI might not start if was installed to a directory with non-ASCII characters in its name
  • IDE integration: NetBeans 8.2 supported

New in YourKit Profiler 2016.06-b23 EAP (Sep 15, 2016)

  • New feature: ability to expand particular filtered branch in call tree views

New in YourKit Profiler 2016.06-b22 EAP (Sep 13, 2016)

  • Memory profiling: if property -Dyjp.alternate.temp.dir= is specified it is also respected while calculating the dominator tree which is performed a memory snapshot is being loaded
  • Bug fixed: assertion might fail when opening a small memory snapshot

New in YourKit Profiler 2016.06-b21 EAP (Sep 9, 2016)

  • Toolbar: new button to clear recorded object allocations and continue recording
  • Agent: bug fixed: when running CPU tracing in attached mode, event stack traces might miss method calls
  • Attach mode: the initial pause significantly decreased by not automatically marking an object generation

New in YourKit Profiler 2016.02-b42 (Sep 8, 2016)

  • IDE integration: IntelliJ IDEA 2016.3 supported
  • Agent: bug fixed: when running CPU tracing in attached mode, event stack traces might miss method calls

New in YourKit Profiler 2016.02-b41 (Sep 8, 2016)

  • Agent: startup option disableall now implies _disable_exception_events too
  • Bug fixed: the profiler UI might immediately disconnect after successfully connecting to a remote profiling application
  • Windows: the profiler agent library yjpagent.dll is digitally signed.

New in YourKit Profiler 2016.06-b20 EAP (Sep 6, 2016)

  • IDE integration: IntelliJ IDEA 2016.3 supported
  • Agent: to reduce profiling overhead in profiled applications running very many threads, the automatic deadlock detector can be turned off by specifying the startup option deadlocks=off (implied by disableall)
  • Improvement: native thread ID is now shown as a decimal number instead of hex. Also, the ID was improperly obtained on Windows and Mac OS X: an internal system call ID was used instead of a "presentable" thread ID that can be found in system logs or seen with the platforms' specific tools.

New in YourKit Profiler 2016.06-b19 EAP (Sep 1, 2016)

  • UI: action "Show in File Manager" introduced in the previous build 18 now supports more Linux desktops including KDE Plasma
  • Windows installer: NSIS version upgraded

New in YourKit Profiler 2016.06-b18 EAP (Aug 31, 2016)

  • Object explorer: class-specific object presentation: color components (red/green/blue/alpha) as well as the color itself are presented for instances of java.awt.Color
  • Object explorer: class-specific object presentation: java.time.* supported
  • UI: "Open Containing Folder" action superseded with actions "Show File in Explorer" on Windows, "Show File in Finder" on Mac OS X, and "Show in File Manager" on other platforms.
  • Agent: optimization: reduced overhead in profiled applications intensively starting new threads
  • Agent: web interface: new action "Dump Threads"

New in YourKit Profiler 2016.06-b17 EAP (Aug 30, 2016)

  • Bug fixed: the profiler UI might immediately disconnect after successfully connecting to a remote profiling application
  • Windows: the profiler agent library yjpagent.dll is digitally signed

New in YourKit Profiler 2016.06-b16 EAP (Jul 29, 2016)

  • Optimization: up to 30% improvement of memory snapshot loading time on multiprocessor machines
  • CPU tracing result accuracy increased in some corner cases thanks to improved time measurement algorithms
  • HP-UX: improvement: the profiler agent now uses intrinsic atomic operations

New in YourKit Profiler 2016.06-b15 EAP (Jul 7, 2016)

  • Memory profiling: object explorer: bug fixed: java.lang.Class instances without children nodes were shown with the expand icon that disappeared on click
  • Remote profiling: bug fixed: the profiler might not always detect situations when the profiled application restarted and continued to listen on the same agent port, erroneously treating the profiling results coming from the new instance as belonging to the old instance. As the result, different sorts of data inconsistencies might arise.
  • Remote profiling: terminated remote applications are detected faster, the UI indicates the disconnected state more promptly

New in YourKit Profiler 2016.06-b14 EAP (Jul 7, 2016)

  • Memory profiling: new inspection "Classes with same name" finds identically named classes loaded in multiple class loaders
  • Memory profiling: object explorer: class loader and, if available, web application information is immediately shown for instances of java.lang.Class
  • "Memory | View Method By Name..." and "CPU | View Method By Name..." actions (Ctrl+Shift+N): currently selected method is now preselected in the chooser popup
  • Other bug fixes

New in YourKit Profiler 2016.02-b40 (Jul 6, 2016)

  • Memory profiling: object explorer: bug fixed: java.lang.Class instances without children nodes were shown with the expand icon that disappeared on click
  • Remote profiling: bug fixed: the profiler might not always detect situations when the profiled application restarted and continued to listen on the same agent port, erroneously treating the profiling results coming from the new instance as belonging to the old instance. As the result, different sorts of data inconsistencies might arise.
  • Remote profiling: terminated remote applications are detected faster, the UI indicates the disconnected state more promptly

New in YourKit Profiler 2016.02-b39 (Jul 6, 2016)

  • Bug fixed: temporary floating license unlocking issues
  • IDE integration: NetBeans: bug fixed: "Profile" action might not work for web applications in NetBeans 8.1

New in YourKit Profiler 2016.02-b38 (Jul 6, 2016)

  • IDE integration: IntelliJ IDEA 2016.2 supported

New in YourKit Profiler 2016.06-b13 EAP (Jun 25, 2016)

  • New feature: ability to clear the telemetry charts. There is a new toolbar button (3rd from the right), new profiler API method com.yourkit.api.Controller.clearCharts(), and a new command line tool command.

New in YourKit Profiler 2016.06-b12 EAP (Jun 25, 2016)

  • Export: improvement: size of generated HTML files significantly reduced
  • Memory profiling: improvements of the action "Memory | Objects by Field Value... (Ctrl+Shift+F)" introduced in build 10
  • Memory profiling: API: set description language: added new tags to describe objects of particular reachability scopes: , , ,
  • IDE integration: NetBeans: bug fixed: "Profile" action might not work for web applications in NetBeans 8.1
  • Bug fixed: temporary floating license unlocking issues

New in YourKit Profiler 2016.06-b11 EAP (Jun 6, 2016)

  • IDE integration: IntelliJ IDEA 2016.2 supported

New in YourKit Profiler 2016.06-b10 EAP (Jun 3, 2016)

  • Threads view: new column "Started" shows thread start times. Sort by this column to present threads in the order of their appearance.
  • Threads view: new state "Waiting in native" is shown for some known methods instead of "Running" which is reported for them by the JVM
  • Memory profiling: object explorer: key and value are immediately shown for map entries. Also, the action "Open map keys, values, entries in a new tab" available for map objects now offers to open entries by default.
  • Memory profiling: object explorer: empty strings are indicated with "" to distinct them from strings with unknown content for which no text is displayed. Previously, there was no text shown in both cases. Note: the content is unknown for unreachable strings in *.snapshot files. This is due to a limitation of the JVM's JVMTI profiling API that provides no access to reference fields of unreachable objects. There is no problem for HPROF snapshots.
  • Memory profiling: new action "Memory | Objects by Field Value... (Ctrl+Shift+F)" opens in a new tab objects having particular field values. This allows to find objects of interest among e.g. many other instances of a class. You can specify the field name and exact value or its minimum and maximum value limits. The action can work with all snapshot objects or with objects presented in a current tab.
  • New startup options to control exception telemetry have been introduced:
  • exceptions=on enables exception events in the JVM and immediately starts recording the exception telemetry. This is the default mode on non-IBM JVMs (Sun/Oracle HotSpot, OpenJDK, JRockit).
  • exceptions=off enables exception events in the JVM but does not immediately start recording the exception telemetry that can instead be recorded later in runtime.
  • exceptions=disable fully disables exception events in the JVM to totally eliminate corresponding overhead. This is the default mode on IBM JVMs because the overhead is significant.
  • Caveat: in previous versions of the profiler the startup option disableexceptiontelemetry, being specified explicitly or implied with disableall, worked for the non-IBM JVMs as the newly introduced option exceptions=off. Now disableexceptiontelemetry is an alias of exceptions=disable.
  • IDE integration: Eclipse and IntelliJ IDEA: if multiple projects are opened in the IDE, the "Open in IDE" action opens the symbol in appropriate one by matching the IDE's project name. This works for applications started from within the IDE with the "Profile" action, as well as for captured snapshots of such applications.

New in YourKit Profiler 2016.02-b37 (Jun 3, 2016)

  • IDE integration: Eclipse: Bndtools run configurations supported
  • Minor bug fixes

New in YourKit Profiler 2016.02-b36 (May 5, 2016)

  • Bug fixed: on Windows, built-in probe Processes could cause a loader leak if the profiled application launched an external process from a thread with certain context loader
  • Bug fixed: built-in probe Databases could lead to logged exceptions in Connection.close()
  • Java 9 support: bug fixed: since JDK 9 build 114, tracing could lead to a stack overflow
  • IDE integration: IntelliJ IDEA plugin: internal improvements

New in YourKit Profiler 2016.02-b35 (Apr 23, 2016)

  • Agent: bug fixed: bytecode instrumentation of classes with very long methods might lead to VerifyError under certain circumstances
  • "Java EE statistics" view: prepare call filtering improved for Cassandra database

New in YourKit Profiler 2016.02-b34 (Apr 5, 2016)

  • Built-in probes: minor performance improvement
  • Other minor internal optimizations and code cleanup

New in YourKit Profiler 2016.02-b33 (Mar 29, 2016)

  • Minor internal improvements

New in YourKit Profiler 2016.02-b32 (Mar 25, 2016)

  • CPU profiling: tracing: optimization: line numbers are not recorded by default for calls made from the methods automatically generated for a JSP page. These line numbers are generally useless because they do not correspond to the JSP source lines, but instead to the automatically generated Java code. As the result of the change, profiled results for individual calls to out.write(...) are aggregated, which simplifies the result interpretation as well as slightly reduces profiling overhead and memory footprint. To revert back to the old behavior please specify the startup option _jsp_with_lines.
  • Internal changes and refactorings
  • Profiler API: com.yourkit.api.Controller: minor changes and JavaDoc clean up

New in YourKit Profiler 2016.02-b31 (Mar 21, 2016)

  • IDE integration: IntelliJ IDEA 2016.1 supported
  • Agent: bug fixed: bytecode instrumentation of some very long methods might lead to VerifyError under certain circumstances
  • Agent: long method bytecode instrumenation improvement. Some long methods cannot be instrumented with probe, tracing and allocation callbacks simultaneously because the resulting bytecode does not fit the Java class format limits. For example, this may happen with Java code automatically generated for a large JSP page. Previously, no instrumentation was applied to such classes. Now the agent tries to instrument them with probes only, thus giving the bytecode a chance to fit the limits, as well as providing most important profiling information.

New in YourKit Profiler 2016.02-b30 (Mar 11, 2016)

  • Memory profiling: object explorer: collection size is immediately shown and the action Memory | Contained Objects is available for more classes: java.util.concurrent.ConcurrentSkipListMap, java.util.concurrent.CopyOnWriteArrayList, java.util.concurrent.CopyOnWriteArraySet, java.util.concurrent.LinkedBlockingDeque, java.util.concurrent.LinkedBlockingQueue
  • UI: triggers: bug fixed: exception on adding a trigger
  • Probes: bug fixed: possible java.lang.ClassCastException in the built-in probe Processes

New in YourKit Profiler 2016.02-b29 (Mar 3, 2016)

  • GC pause telemetry: bug fixed: durations were erroneously shown in microseconds instead of milliseconds
  • IDE integration: IntelliJ IDEA: profiler settings UI now take less space itself, thus addressing an issue with IDEA's layout not giving enough space to other components in some contexts, e.g. for server configurations
  • DataNucleus probe: improvements

New in YourKit Profiler 2016.02-b28 (Mar 1, 2016)

  • Agent: OSGi support improved: more cases are handled automatically thus eliminating the need to manually tweak OSGi settings to allow loading of the profiler classes. In particular, the change affects some WebSphere Liberty profile cofigurations.
  • Added support of DataNucleus (a JPA implementation)

New in YourKit Profiler 2016.02-b27 (Mar 1, 2016)

  • A fire icon indicating hot spot methods is now also available in CPU profiling live call tree, as well as in object allocation and garbage call trees

New in YourKit Profiler 2016.02-b26 (Feb 26, 2016)

  • User Interface:
  • Table columns with percents now also show graphical bars to make most important information immediately visible.
  • Optimization: connection to a profiling application, especially remote, completes faster thanks to merging multiple requests to one
  • Welcome screen: list of local applications: Windows, Linux, Mac OS X: new column "CPU" shows CPU utilization percent for each listed process
  • Automatic updates to maintenance builds.
  • CPU Profiling:
  • Hot spot methods are indicated with a fire icon: small one for methods calling the hot spots, and big one for the hot spots themselves.
  • Optimization: the range of trivial methods excluded from CPU tracing instrumentation for performance consideration has been extended
  • Optimization: less memory is needed to open performance snapshots
  • CPU tracing: bug fixed: adaptive tracing could exclude calls too aggressively thus resulting in missing nodes in the call tree
  • CPU tracing: bug fixed: bogus line numbers for calls from skipped (non-instrumented, filtered by adaptive tracing) methods
  • Memory Profiling:
  • The profiler needs up to 20% less memory to load a memory snapshot. Thanks to this improvement the profiler is now able to open huge snapshots that could not be opened on the same machine with the previous versions of the profiler.
  • Memory snapshots are loaded up to 15% faster
  • "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.
  • 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 "" and ""
  • Allocation recording: it is now possible to filter recorded objects only by their size by setting the record-each parameter to 0
  • Added handling of java.lang.ClassValue maps. This class introduced in Java 7 allows to associate a computed value with a 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.
  • UI: Quick info: optimization: export of a byte array to a binary file now works much faster
  • UI: optimization: Class list and other object-grouping views now open up to 2 times faster
  • UI: object explorer: class constant pool presentation cleanup: entries are not shown for the references that are also accessible from static fields of the same class
  • UI: 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
  • UI: object explorer: class-specific object presentation: for instances of java.nio.Buffer the buffer capacity is immediately shown
  • New memory inspection "NIO direct buffers native memory usage" shows how much native memory is allocated to direct byte buffers (java.nio.DirectByteBuffer and java.nio.DirectByteBufferR). Note that other kinds of direct buffers, like java.nio.DirectLongBuffer, delegate to underlying ("attached") byte buffers and thus do not allocate native memory directly.
  • UI: "GC Roots" view (Memory | GC Roots): methods under "Roots by thread" are sorted according to the call stack order
  • UI: improvement: in "Threads" tab of a HPROF snapshot captured on OutOfMemoryError the thread in which the OutOfMemoryError had happened is now shown first
  • UI: improvement: "Threads" tab of a HPROF snapshot: added link "Open object" to open corresponding instance of java.lang.Thread
  • Bug fixed: java.lang.TypeNotPresentException when opening particular snapshot
  • Caveat: 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 /.yjp/ui.ini
  • Telemetry:
  • 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.
  • Event Recording with Probes:
  • New feature: higher-level profiling of MongoDB (Java driver version 3.0 and newer are supported). 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)
  • New feature: higher-level profiling of Java persistence (JPA). 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 Cassandra database. Cassandra request information is available in:
  • "Java EE statistics" view, Database section
  • "Events" tab (new built-in probe com.yourkit.probes.builtin.Cassandra)
  • "Performance charts" tab (new built-in probe com.yourkit.probes.builtin.CassandraLW)
  • New feature: higher-level profiling of HBase database. HBase request information is available in:
  • "Java EE statistics" view, Database section
  • "Events" tab (new built-in probe com.yourkit.probes.builtin.HBase)
  • "Performance charts" tab (new built-in probe com.yourkit.probes.builtin.HBaseLW)
  • New feature: higher-level profiling of AsynchronousChannel. The information is available in "Events" tab (new built-in probe com.yourkit.probes.builtin.AsyncChannels)
  • Built-in probes 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").
  • Probe overhead reduced by optimizing reflection calls performed in some built-in probes
  • "Events" tab: the table selector tree improvement: to save vertical space and simplify interpretation of the view, the nodes for empty tables are by default collapsed
  • "Events" tab: selecting a table in the selector tree navigates to the nearest event from this table in the Timeline, if the Timeline is visible and the table is included. To disable the navigation specify -Dyjp.timeline.select.event=false in /.yjp/ui.ini
  • "Performance charts" tab: the chart selector tree improvement: to save vertical space and simplify interpretation of the view, the nodes for empty charts are by default collapsed and moved to the bottom
  • "Events" and "Performance counters" tabs: other multiple UI improvements
  • Inspection "Threads created but not started": improvement: a false alarm is not longer reported for known JVM internal threads that are actually started and running, but the start event is not available
  • IDE Integration:
  • 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 -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl as a workaround.
  • 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
  • IntelliJ IDEA: bug fixed: action "Tools | Open in IDE (F7)" might navigate to a wrong anonymous class in some non trivial cases
  • Miscellaneous:
  • 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.
  • Agent: multiple stability improvements
  • Agent: optimization: reduced thread event processing overhead when no active profiling is running
  • 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
  • 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).
  • Profiler UI settings file ui.ini was moved from the profiler installation directory to the user home, now being /.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.
  • Internal improvements and clean up

New in YourKit Profiler 2016.02-b24 EAP (Feb 25, 2016)

  • Agent: optimization: reduced thread event processing overhead when no active profiling is running
  • MongoDB: support improved for some Java driver versions

New in YourKit Profiler 2016.02-b23 EAP (Feb 25, 2016)

  • New feature: higher-level profiling of Cassandra database. Cassandra request information is available in:
  • "Java EE statistics" view, Database section
  • "Events" tab (new built-in probe com.yourkit.probes.builtin.Cassandra)
  • "Performance charts" tab (new built-in probe com.yourkit.probes.builtin.CassandraLW)
  • New feature: higher-level profiling of HBase database. HBase request information is available in:
  • "Java EE statistics" view, Database section
  • "Events" tab (new built-in probe com.yourkit.probes.builtin.HBase)
  • "Performance charts" tab (new built-in probe com.yourkit.probes.builtin.HBaseLW)
  • Object explorer: class-specific object presentation: for instances of the classes extending java.nio.Buffer the buffer capacity is immediately shown
  • "Events" tab: the table selector tree improvement: to save vertical space and simplify interpretation of the view, the nodes for empty tables are by default collapsed
  • "Events" tab: selecting a table in the selector tree navigates to the nearest event from this table in the Timeline, if the Timeline is visible and the table is included. To disable the navigation specify -Dyjp.timeline.select.event=false in /.yjp/ui.ini
  • "Performance charts" tab: the chart selector tree improvement: to save vertical space and simplify interpretation of the view, the nodes for empty charts are by default collapsed and moved to the bottom
  • Memory profiling: New memory inspection "NIO direct buffers native memory usage" shows how much native memory is allocated to direct byte buffers (java.nio.DirectByteBuffer and java.nio.DirectByteBufferR). Note that other kinds of direct buffers, like java.nio.DirectLongBuffer, delegate to underlying ("attached") byte buffers and thus do not allocate native memory directly.
  • Inspection "Threads created but not started": improvement: a false alarm is not longer reported for known JVM internal threads that are actually started and running, but the start event is not available

New in YourKit Profiler 2015.12-b22 EAP (Feb 22, 2016)

  • UI: bug fixed: issues with filtering in tables and trees in live views

New in YourKit Profiler 2015.12-b21 EAP (Feb 20, 2016)

  • UI: table columns with percents now also show graphical bars to make most important information immediately visible
  • Welcome screen: list of local applications: Windows, Linux: new column "CPU" shows CPU utilization percent for each listed process
  • UI: improvement: in "Threads" tab of a HPROF snapshot captured on OutOfMemoryError the thread in which the OutOfMemoryError had happened is now shown first
  • UI: improvement: "Threads" tab of a HPROF snapshot: added link "Open object" to open corresponding instance of java.lang.Thread
  • Built-in probes: minor optimization
  • CPU tracing: bug fixed: adaptive tracing could exclude calls too aggressively thus resulting in missing nodes in the call tree
  • CPU tracing: bug fixed: bogus line numbers for calls from skipped (non-instrumented, filtered by adaptive tracing) methods

New in YourKit Profiler 2015.12-b20 EAP (Feb 6, 2016)

  • 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.

New in YourKit Profiler 2015.12-b19 EAP (Feb 3, 2016)

  • New feature: MongoDB supported. MongoDB request information is available in: Java EE high-level statistics view, Database section
  • Events (new built-in probe com.yourkit.probes.builtin.MongoDB)
  • Performance charts (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

New in YourKit Profiler 2015.12-b18 EAP (Jan 29, 2016)

  • Optimization: less memory is needed to open performance snapshots

New in YourKit Profiler 2015 Build 15086 (Jan 28, 2016)

  • Bug fixed: performance snapshot files larger than 4 GB might fail loading
  • UI: if appropriate license key cannot be obtained from legacy floating license server, user is given detailed instructions on how to proceed
  • Export to CSV: bug fixed: improperly added extra space character
  • Threads: bug fixed: possible exception in a live view when clicking the graph if the method filter is not empty
  • Memory profiling: added support of partially incorrect HPROF dumps that are sometimes generated with jmap from a core file
  • Command line tool: added a command to start CPU profiling in the call counting mode

New in YourKit Profiler 2015.12-b17 EAP (Jan 28, 2016)

  • Memory profiling: Duplicate objects inspection now performs multiple passes to identify duplicates of higher order. This allows 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: memory footprint of snapshot opening was slightly decreased

New in YourKit Profiler 2015.12-b15 EAP (Jan 22, 2016)

  • UI: if appropriate license key cannot be obtained from legacy floating license server, user is given detailed instructions on how to proceed
  • Export to CSV: bug fixed: improperly added extra space character
  • Threads: bug fixed: possible exception in a live view when clicking the graph if the method filter is not empty
  • Memory profiling: added support of partially incorrect HPROF dumps that are sometimes generated with jmap from a core file
  • Command line tool: added a command to start CPU profiling in the call counting mode
  • 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

New in YourKit Profiler 2015.12-b14 EAP (Dec 19, 2015)

  • Minor bug fixes
  • Bug fixed: performance snapshot files larger than 4 GB might fail loading

New in YourKit Profiler 2015.12-b13 EAP (Dec 17, 2015)

  • Memory profiling: object explorer: class constant pool presentation cleanup: minor fixes to the changes made in build 12
  • Various other bug fixes

New in YourKit Profiler 2015.12-b12 EAP (Dec 17, 2015)

  • Memory profiling: bug fixed: primitive static field values were shown improperly for HPROF snapshots
  • Memory profiling: bug fixed: java.lang.TypeNotPresentException when opening particular snapshot
  • Memory profiling: object explorer: class constant pool presentation cleanup: entries are not shown for the references that are also accessible from static fields of the same class

New in YourKit Profiler 2015 Build 15084 (Dec 16, 2015)

  • Memory profiling: bug fixed: primitive static field values were shown improperly for HPROF snapshots
  • UI: bug fixed: changing time range selection in a telemetry graph might lead to an exception if the quick search popup was shown
  • Java 9 support: build JDK 9 build 95 supported

New in YourKit Profiler 2015.12-b11 EAP (Dec 8, 2015)

  • Java 9 support: build JDK 9 build 95 supported
  • UI: bug fixed: changing time range selection in a telemetry graph might lead to an exception if the quick search popup was shown
  • Automatic updates implemented for non-Windows systems too (will activate after the next build 12 is released).

New in YourKit Profiler 2015.12-b10 EAP (Dec 4, 2015)

  • Windows: automatic updates (will activate after the next build 11 is released)
  • 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 "" and ""
  • Memory profiling: "GC Roots" view (Memory | GC Roots): methods under "Roots by thread" are sorted according in the call stack order, not by name
  • Problem solved: internal error on opening "Garbage Objects" view for some memory snapshots with recorded object allocations for which the JVM reported partially inconsistent object sizes (problem have been reported for IBM Java 7)

New in YourKit Profiler 2015 Build 15082 (Dec 2, 2015)

  • Java 9 support: added handling of new class jdk.internal.misc.Unsafe
  • 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)
  • Problem solved: internal error on opening "Garbage Objects" view for some memory snapshots with recorded object allocations for which the JVM reported partially inconsistent object sizes (problem have been reported for IBM Java 7)

New in YourKit Profiler 2015.12-b9 EAP (Nov 27, 2015)

  • 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
  • Profiler UI settings file ui.ini was moved from the profiler installation directory to the user home, now being /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
  • CPU profiling: the range of trivial methods excluded from CPU tracing instrumentation for performance consideration has been extended
  • Memory profiling: the allocation recording parameter record-each can now be set to 0 to allow filtering recorded objects only by their size
  • 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)

New in YourKit Profiler 2015 Build 15080 (Nov 26, 2015)

  • The process of obtaining the evaluation license key on a machine not connected to the Internet has been simplified

New in YourKit Profiler 2015.12-b8 EAP (Nov 18, 2015)

  • 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.
  • 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 complex cases
  • IDE integration: NetBeans 8.1 supported

New in YourKit Profiler 2015.12-b7 EAP (Nov 18, 2015)

  • Bug fixed: JBoss might not start from within an IDE due to an improper initialization sequence of its custom MBeans. Until this fix, it was required to specify -Djboss.platform.mbeanserver -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl as a workaround.
  • 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.

New in YourKit Profiler 2015 Build 15078 (Nov 16, 2015)

  • IDE integration: NetBeans 8.1 supported
  • Command line tool: new commands enable-stack-telemetry and disable-stack-telemetry to control stack telemetry in runtime
  • Built-in probe Databases: minor optimization
  • Bug fixed: some valid license keys could be reported invalid

New in YourKit Profiler 2015.12-b6 EAP (Nov 11, 2015)

  • 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".
  • Command line tool: new commands enable-stack-telemetry and disable-stack-telemetry to control stack telemetry in runtime

New in YourKit Profiler 2015 Build 15076 (Nov 3, 2015)

  • Deobfuscation support: bug fixed: ProGuard log with line numbers failed to load
  • Memory profiling: bug fixed: I/O error during snapshot loading might lead to the internal error dialog instead of a human-readable messages
  • Agent: stability improvements
  • Problem solved: the profiler UI might not start with IBM Java
  • Bug fixed: some main menu actions under "CPU" submenu were incorrectly enabled in contexts where they were not supposed to work, resulting in internal error dialogs on invocation
  • Bug fixed: JDK 9 Early Access with Project Jigsaw might crash on start when running with the agent with enabled bytecode instrumentation

New in YourKit Profiler 2015.12-b5 EAP (Oct 23, 2015)

  • Agent: stability improvements
  • Problem solved: the profiler UI might not start with IBM Java
  • Bug fixed: some main menu actions under "CPU" submenu were incorrectly enabled in contexts where they were not supposed to work, resulting in internal error dialogs on invocation
  • Bug fixed: JDK 9 Early Access with Project Jigsaw might crash on start when running with the agent with enabled bytecode instrumentation

New in YourKit Profiler 2015 Build 15074 (Sep 17, 2015)

  • Memory profiling: UI: bug fixed: some references from class static fields could be lost on snapshot loading
  • UI: bug fixed: by-name lookup windows (e.g. Ctrl+N) could hang for a long time on entering a pattern matching a big number of items
  • Agent: attach mode: to reduce the pause on attach that can be observed for some applications (e.g. IntelliJ IDEA), the built-in probes JUnitTests and TestNG are now by default disabled

New in YourKit Profiler 2015.12-b4 EAP (Aug 28, 2015)

  • Memory profiling: HPROF snapshot loading optimization
  • Deobfuscation support: bug fixed: ProGuard log with line numbers failed to load
  • Memory profiling: bug fixed: I/O error during snapshot loading might lead to the internal error dialog instead of a human-readable messages

New in YourKit Profiler 2015.12-b3 EAP (Aug 26, 2015)

  • 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. Alternatively, you can use an evaluation license.
  • UI: bug fixed: by-name lookup windows (e.g. Ctrl+N) could hang for a long time on entering a pattern matching a big number of items
  • Agent: attach mode: to reduce the pause on attach that can be observed for some applications (e.g. IntelliJ IDEA), the built-in probes JUnitTests and TestNG are now by default disabled
  • Bug fixed: exception in the update checker thread
  • Internal improvements and clean up

New in YourKit Profiler 2015 Build 15072 (Aug 12, 2015)

  • Memory profiling: improved handling of invalid HPROF dumps: more cases are handled, resulting in a human-readable error message being shown instead of the internal error dialog
  • Agent: code improvements for IBM Java
  • Minor fixes

New in YourKit Profiler 2015 Build 15070 (Aug 7, 2015)

  • UI: Improved and streamlined UI for requesting and entering a license key on machines with no direct Internet access
  • CPU profiling: UI: if CPU tab is visible when CPU profiling starts, call tree (for sampling, tracing) or method list (for call counting) view is automatically selected. Now this behavior is optional: to always keep the currently selected view specify -Dyjp.auto-select-cpu-view=false in /bin/ui.ini
  • UI: bug fixed: assertion might fail under certain rare circumstances on Mac OS X
  • Agent: new startup option log_sys_time makes each entry of the agent log file annotated with system date and time, in addition to the process uptime

New in YourKit Profiler 2015 Build 15068 (Jul 17, 2015)

  • Agent: Windows version detection improved. In particular, Windows 10 is now properly detected, and the Summary shows Windows version with the build number.
  • IDE integration: bug fixed: NetBeans plugin might not be installed on Windows 10
  • CPU profiling: CPU tracing result correction is now applied only if -Dyjp.apply.calibration=true is specified in /bin/ui.ini
  • Memory profiling: optimization: improved loading time of memory snapshots (in particular, "task 3" in progress)
  • Memory profiling: optimization: Object explorer and other views open faster for some object sets
  • Memory profiling: bug fixed: memory leak of temporary data structures created during snapshot loading

New in YourKit Profiler 2015 Build 15066 (Jul 3, 2015)

  • IDE integration: IntelliJ IDEA 15 EAP supported
  • Agent: bug fixed: capturing a memory snapshot would crash the agent if the snapshot directory was located (most likely, specified by user) on a file system not supporting mapping of files to memory
  • Java EE statistics: SQL view: bug fixed: incorrect grouping by type for queries with comments
  • UI: bug fixed: possible stack overflow when searching very deep trees

New in YourKit Profiler 2015 Build 15064 (Jun 25, 2015)

  • New platform supported: Linux on PowerPC Little-Endian (ppc64le)
  • Memory profiling: issue solved: objects might be skipped when loading corrupt HPROF files produced by earlier JVMs
  • Agent: bug fixed: VerifyError in certain Scala compiled code

New in YourKit Profiler 2015 Build 15062 (Jun 22, 2015)

  • Command line tool: new command force-gc to force garbage collection
  • Probes: built-in probe Servlets: optimization
  • Bug fixed: remote sessions might be improperly detected as local if both the local and the remote machines were running the same OS and under users with the same name

New in YourKit Profiler 2015 Build 15060 (Jun 22, 2015)

  • New feature: profiler agent status can be checked by opening http://localhost: for a local profiled application or http://: for a remote profiled application in a web browser. The shown page resembles the content of the Summary tab in the profiler UI plus provides detail on currently active profiling modes.

New in YourKit Profiler 2015 Build 15056 (May 7, 2015)

  • IDE integration: Linux and other platforms using yjp.sh to launch the profiler UI: bug fixed: the profiler UI automatically launched with the "Profile" action might unexpectedly exit should the profiled application be killed
  • License server support improvements

New in YourKit Profiler 2015 Build 15054 (Apr 30, 2015)

  • Experimental support of Linux on AArch64. The agent is located in /bin/linux-aarch64. Profiling should be enabled manually.
  • License server support improvements
  • Minor bug fixes

New in YourKit Profiler 2015 Build 15052 (Apr 27, 2015)

  • If to access the Internet an HTTP proxy is used, you can now specify the proxy settings in the profiler UI.
  • Note: although the Internet access is not required to use the profiler UI, its availability greatly simplifies installed copy activation with the license key, especially when using floating licenses, as well as enables automatic update checking.
  • The proxy configuration link is available when you enter the license key, as well as via "Settings | Proxy..." in the main menu.
  • Built-in probes: bug fixed: possible runtime exception when monitoring some objects, e.g. database statements, with such equals() method implementation that it does not allow to safely compare them with instances of a different class
  • Memory profiling: improved loading of partially incorrect HPROF snapshots

New in YourKit Profiler 2015 Build 15046 (Apr 14, 2015)

  • New license server: now you may lock a floating license to use the profiler UI offline, i.e. without a connection to the license server, until you explicitly unlock the license
  • Minor bug fixes

New in YourKit Profiler 2015 Build 15044 (Apr 7, 2015)

  • New license server support
  • Minor bug fixes

New in YourKit Profiler 2015 Build 15042 (Apr 4, 2015)

  • CPU Profiling:
  • New feature: Call counting, a lightweight CPU profiling mode.
  • Call counting is a new CPU profiling mode, which is an alternative to CPU sampling and CPU tracing.
  • It's a simple tool for identifying potential performance problems caused by suboptimal algorithms. The approach is based on assumption that method(s) with a big number of invocations may indicate a performance problem.
  • It's fast:
  • Call counting is specially designed to have minimal possible, almost zero overhead (see detail below).
  • Available on demand:
  • Just like CPU sampling and CPU tracing, call counting is off by default. You may turn it on from the start using the startup option call_counting, as well as turn on and off in runtime when necessary. When call counting is on, you may clear collected results.
  • Measures invocation counts only:
  • Unlike other CPU profiling modes call counting does not provide stack traces nor method times. Instead, it provides a plain method list with method invocation counts.
  • No per-thread information:
  • Method invocations from different threads are summed and cannot be distinguished.
  • No high-level Java EE statistics:
  • Probes in Auto activity mode are not activated when call counting starts. To get Java EE statistics, please instead use sampling or tracing.
  • Based on bytecode instrumentation for CPU tracing:
  • If you disable CPU tracing with the startup options disabletracing or disableall call counting will not be available.
  • Not exact: some invocations may be missed:
  • To ensure minimal overhead invocation counts are updated without taking any locks or using test-and-set style atomic operations. As the result, some invocations of the same method happening simultaneously in parallel threads may be missed due to a race condition (non atomic integer value increment). Fortunately, the probability of such events is low, and missed invocations, if any, will normally constitute only a small fraction of all invocations.
  • Use recommendation: start with call counting, continue with CPU tracing or sampling if necessary:
  • Use call counting to initially detect possible problems: thanks to its low overhead, you may do this even in production.
  • Further investigation may involve using CPU tracing or sampling to get comprehensive profiling results with times and stack traces (call tree).
  • CPU tracing results now include exact source code line numbers.
  • Profiling overhead considerations:
  • We decided to enable line number recording by default because, according to our tests, it usually adds almost no extra tracing overhead even in call-intensive applications: the difference is usually less than 5% when CPU tracing is running and even smaller when CPU tracing is not running.
  • Unfortunately, in some rare cases the extra overhead may be significant (+10% and more). To avoid it you may disable bytecode instrumentation for line number recording by specifying startup option _tracing_disable_lines (note it starts with an underscore).
  • Availability note: line numbers are not available in JRockit.
  • CPU tracing no longer applies user-defined filters in runtime. Instead, the adaptive tracing mode reduces tracing overhead automatically.
  • Because CPU tracing was the only profiling mode which applied filters in runtime, the filters are now applied in the UI only across the profiler and their only purpose now is to improve result presentation. It's no longer needed to re-run profiling to apply the filter change in the UI.
  • CPU tracing: adaptive tracing is much more efficient now: remaining overhead for excluded methods was dramatically reduced
  • CPU sampling: default settings have been changed to measure time for Thread.sleep(*) as wall time, thus making it visible by default
  • CPU profiling: method System.currentTimeMillis() is now by default instrumented for CPU tracing, and will be visible in CPU tracing and call counting results. Note: this method is intrinsic; if you need to totally eliminate the profiling overhead for its calls, exclude it from instrumentation by using the startup option _skip_currentTimeMillis
  • CPU profiling: if necessary, method System.nanoTime() can be instrumented for CPU tracing, and will be visible in CPU tracing and call counting results, by using the startup option _with_nanoTime. This method is not instrumented by default because it is intrinsic, and by its nature should provide results as accurate as possible, so any additional overhead is not desired.
  • CPU profiling: the range of trivial methods like getters and setters excluded from CPU tracing instrumentation for performance consideration has been extended. Now it includes methods whose bytecode satisfies the following conditions
  • does not exceed 32 bytes;
  • does not contain cycles;
  • contains only these instructions: load, store and other stack operations, field access, bit and arithmetic operations, comparison operations, return. In particular, this means that these methods cannot call other methods nor create objects.
  • Note: to force instrumentation of these methods specify startup option _instrument_all_methods.
  • UI: "CPU" tab component layout has been unified in live and snapshot modes
  • UI: memory footprint of loaded CPU sampling or CPU tracing profiling results has been greatly reduced
  • Agent: CPU tracing: lambda related bug fixes
  • "Java EE statistics" view: bug fixed: results from the oldest dead threads might not be accounted
  • Memory Profiling:
  • New feature: allocated object counting, a lightweight object allocation recording mode.
  • Allocated object counting is a new allocation recording mode which is an alternative to the traditional full-featured recording of allocated object stacks and remembering where particular instances were created.
  • Use this mode to quickly get insight on how many objects are created and of which classes. In particular, this identifies excessive garbage allocation problems (lots of temporary objects).
  • It's fast:
  • Object counting is specially designed to have minimal possible overhead (see detail below). The overhead is negligible in most cases.
  • Available on demand:
  • Just like traditional allocation recording, object counting is off by default. You may turn it on from the start using the startup option alloc_object_counting, as well as turn on and off in runtime when necessary.
  • Counts created objects:
  • Unlike traditional allocation recording, object counting does not provide stack traces and does not track particular instances, i.e. no allocation information for particular live object(s) is available in a memory snapshot.
  • Instead, this mode provides allocated object counts by class, then by the immediate allocator method with the exact line number, if available.
  • No per-thread information:
  • Objects allocated in different threads are summed and cannot be distinguished.
  • Based on bytecode instrumentation:
  • If you disable allocation recording with the startup options disablealloc or disableall object counting will not be available.
  • Not exact: some allocations may be missed
  • To ensure minimal overhead allocation counts are updated without taking any locks or using test-and-set style atomic operations. As the result, some allocations of objects of the same class created in the same method simultaneously in parallel threads may be missed due to a race condition (non atomic integer value increment). Fortunately, the probability of such events is low, and missed allocations, if any, will normally constitute only a small fraction of all allocations.
  • Use object counting to initially detect possible problems: thanks to its low overhead, you may do this even in production.
  • Further investigation may involve using the traditional allocation recording mode to get comprehensive profiling results with stack traces (call tree).
  • "Memory" tab component layout has been unified in live and snapshot modes
  • Tab "Garbage Collection" has been replaced with the new tab "Garbage Objects" which is available only in memory snapshots with recorded object allocations, and only if they were in the traditional mode but not with allocated object counting (see below).
  • Garbage collection telemetry graphs are now located in the "Memory" tab alongside with memory usage and object allocation rate graphs, which makes it easy to correlate all information about the heap.
  • Objects view: improved view link grouping, sorting and naming. In particular:
  • the group "Statistics" renamed to "Objects by category"
  • "Class list" renamed to "Class" (a category now), "Class tree" to "Class and package"
  • views related to object allocation recording are grouped as "Allocations by site" (show where objects were created) and "Allocated objects by life span" (show how long objects lived)
  • Actions Memory | Instances by Class... (Ctrl+N) and Memory | Class Itself (java.lang.Class) by Name... (Ctrl+Shift+N) improved: the pattern is now applied as a substring of the full class name. In particular this allows you to:
  • open inner classes by short name ("Entry" for "Map$Entry")
  • specify a name part in the middle, not only a starting prefix ("Map" for "HashMap")
  • specify a package ("com.foo.*Wrapper*")
  • UI: "Class list" and "Class loaders": camel hump notation support improved in the search field
  • Objects view: new view "Shallow size" in the "Objects by category" section has been added to distribute objects by shallow size range. Evaluate how many small, medium and large objects are in the heap, and how much memory they use.
  • Objects view: Merged paths view is now available as a slave view only. To simplify the UI it is no longer added as a left side link in the tabs for object subsets. You still may see merged paths for the tab's entire object set by using the slave view in Class tree.
  • Object explorer: optimization: UI works smoother while showing huge BigInteger and BigDecimal values
  • Object explorer: bug fixed: internal error dialog might be shown when browsing BigInteger or BigDecimal instances with invalid values
  • Memory | Contained Objects action: added support of special collection implementation classes java.util.Collections$SynchronizedCollection, java.util.Collections$UnmodifiableCollection, java.util.Collections$SynchronizedMap, java.util.Collections$UnmodifiableMap
  • Object allocation recording: streamlined limit logic: allocation is recorded for all objects with size at least X and only for each N-th object of a smaller size
  • Object allocation recording: default value of the "Record all objects with the size >=" setting has been reduced from 1 MB to 4 KB (4096 bytes). This change ensures that more objects of potential interest are registered, without increasing profiling overhead in most cases.
  • Object allocation recording: garbage collection views in memory snapshot: new column "Avg. GCed Size" shows the average shallow size of collected objects
  • Memory telemetry: new telemetry graph "Object Allocation Recording" in the "Memory" tab shows the number of objects created per second when object allocation recording is running
  • Memory telemetry: garbage collection counts are now presented on a single graph with an ability to choose what collections to see: minor, major or both (default)
  • Export with command line: for a memory snapshot, values of all java.lang.Strings instances are exported to strings.txt. This mode is enabled by default; the controlling property name is export.strings.
  • Export is performed to the text format only, i.e. the export.txt property should be specified if you explicitly specify any of the format properties.
  • To export only strings, use a command line like this (use full paths where necessary):
  • java -Dexport.strings -Dexport.txt -jar yjp.jar -export foo.snapshot outputDir
  • Strings are exported one per line, with end of line characters quoted as \n and \r, and the backslash character itself quoted as \\.
  • Objects of all reachability scopes are exported. Duplicates are not eliminated. The output order is unspecified.
  • Telemetry:
  • CPU usage estimation: "Samples" column reworked: it now shows in how many time points corresponding stack trace has been registered, in any thread; the value for the top node now presents the number of samples selected. The new approach allows you to estimate how much time the profiled application spends inside particular code branches. (Previous behavior summed stack occurrences in parallel threads, thus making percents less useful.)
  • "Stack Traces" tab now shows the clicked point's date in addition to its time of day and uptime, if available
  • Event Recording with Probes:
  • Built-in probe Databases and corresponding performance charts: improved handling of Spring framework wrapping connections
  • Built-in probe Processes: added recording of the process identifier (PID)
  • Bug fixed: duplicated parent events might have been created for dependent events by built-in probes Files and Sockets
  • Bug fixed: false alarm in event inspections "Socket connection opened but not accessed" and "Files opened but not accessed"
  • IDE Integration:
  • Eclipse: plugin code improvement and cleanup
  • Eclipse: support of 3rd party launch configuration types improved (detail)
  • Eclipse 4.5 supported (tested with M5)
  • MyEclipse 2015 supported
  • JDeveloper: added detection of 32 vs 64-bit Java to automatically choose appropriate agent bitness
  • JDeveloper 12c supported
  • Miscellaneous:
  • UI: new feature: inline search in all tables and trees: click a table or a tree and start typing. In trees the search works in currently invisible (collapsed) nodes too, except for those in the object explorer and "Incoming References" because they are potentially infinite and in merged callees list and merged paths for performance considerations.
  • Welcome screen: added a list of recent remote connections
  • IBM Java 8 supported
  • IBM Java: profiling overhead has been significantly reduced.
  • Caveat: as the result, the following profiling capabilities are no longer enabled by default: exception telemetry;
  • local variable names in memory snapshots (stacks and threads are not affected).
  • You may return them (as well as associated overhead) by specifying startup options _enable_exception_events and _with_local_vars respectively.
  • Agent: bytecode instrumentation optimizations and bug fixes. In particular, the changes solve issues with Groovy classes and classes obfuscated with ProGuard.
  • Agent: startup option sessionname now allows use an environment variable value by specifying its name in curly brackets. The default, automatically generated session name can be specified via {default}. For example, to append the host name to the default name, use sessionname={default}-{HOSTNAME} on UNIX and sessionname={default}-{COMPUTERNAME} on Windows.
  • UI: the profiler UI itself now requires Java 7 or newer to run. Note: profiling of Java 6 applications remains fully supported.
  • UI: "Open Snapshot" dialog: new action "Open Containing Folder" opens the snapshot file location in system file manager
  • UI: "Open Snapshot" dialog: to improve readability the snapshot file extension .snapshot is not shown in the table
  • UI: the dedicated legend component describing non-trivial icons in trees has been removed to save vertical space. Instead, an icon description can be found in its tooltip.
  • UI: the demo application launched from the Welcome screen is now started with CPU tracing instead of CPU sampling
  • UI: improvement: action File | Extract Performance Snapshot offers to open the resulting snapshot
  • UI: automatic update check: the notification that a newer version is available is shown once a day only instead of doing so on each UI start. Note that you can explicitly check for updates using Help | Check for Update.
  • UI: bug fixed: race condition could lead to an internal error when capturing a performance snapshot
  • Snapshot comparison results tab header now explicitly indicates which of the compared snapshots is the old one (the baseline) and which the new one.
  • Deadlock detector: when a deadlock is detected, a new button "Copy to Clipboard" is shown next to "Refresh" to make the functionality easily discoverable. Previously the copy action was available in a popup menu only.
  • Linux distribution: only a 64-bit JRE is now bundled to run the profiler UI. To run the profiler UI on a 32-bit Linux machine you'll need to have a JRE/JDK installed. Note: profiling of either 32 or 64-bit Java applications is still fully supported; this change is only about running the profiler itself.
  • Other improvements and bug fixes

New in YourKit Profiler 2015 Build 15040 EAP (Apr 4, 2015)

  • Memory profiling: object explorer: bug fixed: internal error dialog might be shown when browsing BigInteger or BigDecimal instances with invalid values
  • UI: bug fixed: exception when applying the "Close tab" action when no snapshot tabs are opened
  • Agent: socket timeout handling improved

New in YourKit Profiler 2015 Build 15038 EAP (Mar 14, 2015)

  • UI: bug fixed: exception when applying the "Close tab" action when no snapshot tabs are opened
  • Probes: improved handling of Spring wrapping connections in built-in probe Databases and corresponding performance charts

New in YourKit Profiler 2015 Build 15036 EAP (Mar 9, 2015)

  • UI: new feature: inline search in all tables and trees: click a table or a tree and start typing. In trees the search works in currently invisible (collapsed) nodes too, except for those in object explorer and "Incoming References" because they are potentially infinite and in merged callees list and merged paths for performance considerations.

New in YourKit Profiler 2015 Build 15034 EAP (Mar 4, 2015)

  • UI: bug fixed: race condition could lead to an internal error when capturing a performance snapshot
  • IDE integration: Eclipse 4.5 supported (tested with M5)

New in YourKit Profiler 2015 Build 15032 EAP (Feb 28, 2015)

  • UI: the dedicated legend component describing non-trivial icons in trees has been removed to save vertical space. Instead, icon description can be found in its tooltip
  • Other improvements and bug fixes

New in YourKit Profiler 2015 Build 15030 EAP (Feb 24, 2015)

  • Welcome screen: added a list of recent remote connections
  • Memory profiling: object explorer: bug fixed: internal error dialog might be shown when browsing BigInteger or BigDecimal instances with invalid values
  • Agent: CPU tracing: lambda related bug fixes
  • IBM Java 8 supported

New in YourKit Profiler 2015 Build 15028 EAP (Feb 14, 2015)

  • Memory profiling: tab "Garbage Collection" has been replaced with the new tab "Garbage Objects" which is available only in memory snapshots with recorded object allocations, and only if they were in the traditional mode but not with allocated object counting
  • Garbage collection telemetry graphs are now located in the "Memory" tab alongside with memory usage and object allocation rate graphs, which makes it easy to correlate all information about the heap.
  • CPU profiling: method System.currentTimeMillis() is now by default instrumented for CPU tracing, and will be visible in CPU tracing and call counting results. Note: this method is intrinsic; if you need to totally eliminate profiling overhead for its calls you may exclude it from instrumentation by using the startup option _skip_currentTimeMillis
  • CPU profiling: if necessary, method System.nanoTime() can be instrumented for CPU tracing, and will be visible in CPU tracing and call counting results, by using the startup option _with_nanoTime. This method is not instrumented by default because it is intrinsic, and by its nature should provide results as accurate as possible, so any additional overhead is not desired.
  • CPU profiling: the range of trivial methods like getters and setters excluded from CPU tracing instrumentation for performance consideration has been extended. Now it includes methods whose bytecode satisfies the following conditions:
  • does not exceed 32 bytes;
  • does not contain cycles;
  • contains only these instructions: load, store and other stack operations, field access, bit and arithmetic operations, comparison operations, return. In particular this means that these methods cannot call other methods nor create objects.
  • Note: to force instrumentation of these methods specify startup option _instrument_all_methods.
  • Snapshot comparison results tab header now explicitly indicates which of the compared snapshots is the old one (the baseline) and which the new one.
  • Events: bug fixed: duplicated parent events might under certain circumstances have been created for dependent events by built-in probes com.yourkit.probes.builtin.Files and com.yourkit.probes.builtin.Sockets
  • IDE integration: Eclipse plugin: internal cleanup
  • Memory profiling: object allocation recording: default value of the "Record all objects with the size >=" setting has been reduced from 1 MB to 4 KB (4096 bytes). This change ensures that more objects of potential interest are registered, without increasing profiling overhead in most cases.
  • Memory profiling: telemetry: garbage collection counts are now presented on a single graph with an ability to choose what collections to see: minor, major or both (default)
  • Event inspections: bug fixes: false alarm in "Socket connection opened but not accessed" and "Files opened but not accessed"
  • IDE integration: MyEclipse 2015 supported

New in YourKit Profiler 2014 Build 14120 (Feb 9, 2015)

  • Agent: attach mode: bug fixed: possible java.lang.NoClassDefFoundError when attaching the agent to a running JVM with some OSGi containers (e.g. some JBoss versions)
  • Agent: issue solved: bogus "There is no application running..." error in UI when a deadlock is detected in recent Java 8 updates due to a Java bug JDK-8067662

New in YourKit Profiler 2014 Build 14118 (Feb 9, 2015)

  • UI: bug fixed: "Hot spots" views might miss filtered methods and could be empty in some cases
  • UI: bug fixed: inconsistent locale usage

New in YourKit Profiler 2015 Build 15026 EAP (Feb 9, 2015)

  • Memory profiling: Objects view: new view "Shallow size" in the "Objects by category" section has been added to distribute objects by shallow size range. It allows to evaluate how many small, medium and large objects are in the heap, and how much memory they use.
  • CPU profiling: "Java EE statistics" view: bug fixed: results from oldest dead threads might not be accounted
  • Deadlock detector: when a deadlock is detected, a new button "Copy to Clipboard" is shown next to "Refresh" to make the functionality easily discoverable. Previously the copy action was available in a popup menu only.
  • UI: the demo application launched from the Welcome screen is now started with CPU tracing instead of CPU sampling
  • UI: automatic update check: the notification that a newer version is available is shown once a day only instead of doing so on each UI start. Note that you can explicitly check for updates using Help | Check for Update.
  • Agent: attach mode: bug fixed: possible java.lang.NoClassDefFoundError when attaching the agent to a running JVM with some OSGi containers (e.g. some JBoss versions)
  • Agent: issue solved: bogus "There is no application running..." error in UI when a deadlock is detected in recent Java 8 updates due to a Java bug JDK-8067662

New in YourKit Profiler 2015 Build 15024 EAP (Feb 3, 2015)

  • Telemetry: "Stack Traces" tab now shows the clicked point's date in addition to its time of day and uptime, if available
  • UI: bug fixed: "Hot spots" views might miss filtered methods and could be empty in some cases

New in YourKit Profiler 2015 Build 15022 EAP (Feb 2, 2015)

  • Memory profiling: memory snapshot: garbage collection views: new column "Avg. GCed Size" shows average shallow size of collected objects
  • Agent: startup option sessionname now allows use an environment variable value by specifying its name in curly brackets. The default, automatically generated session name can be specified via {default}. For example, to append the host name to the default name use sessionname={default}-{HOSTNAME} on UNIX and sessionname={default}-{COMPUTERNAME} on Windows.
  • IDE integration: Eclipse plugin: support of 3rd party launch configuration types improved - see forum for detail
  • IDE integration: Eclipse plugin UI: bug fixed: improper radio group behavior (EAP regression)
  • IDE integration: JDeveloper: added detection of 32 vs 64-bit Java to automatically choose appropriate agent bitness

New in YourKit Profiler 2015 Build 15020 EAP (Jan 26, 2015)

  • Allocated object counting (see changes in 15016, 15018) improved: exact line numbers where objects are allocated are now recorded, if available
  • IDE integration: JDeveloper 12c supported
  • Memory profiling: object explorer: optimization: UI works smoother while showing huge BigInteger and BigDecimal values
  • Export with command line: value of all java.lang.Strings instances are exported as strings.txt for a memory snapshot. As for all other modes, this one is enabled by default; the controlling property name is export.strings
  • Export is performed to the text format only, i.e. the export.txt property should be specified if you explicitly specify any of the format properties
  • To export only strings, use a command line like this (use full paths where necessary)
  • java -Dexport.strings -Dexport.txt -jar yjp.jar -export foo.snapshot outputDir
  • Strings are exported one per line, with end of line characters quoted as \n and \r, and the backslash character itself quoted as \\
  • Objects of all reachability scopes are exported. Duplicates are not eliminated. The output order is unspecified

New in YourKit Profiler 2015 Build 15018 EAP (Jan 22, 2015)

  • Allocated object counting (see changes in 15016) improved: recorded objects are grouped not only by class, but also by the method where they are allocated
  • UI: improvement: action "File | Extract Performance Snapshot" offers to open the resulting snapshot

New in YourKit Profiler 2015 Build 15016 EAP (Jan 20, 2015)

  • Memory tab: telemetry: garbage collection activity graphs are shown too
  • UI: "Open Snapshot" dialog: new action "Open Containing Folder" opens the snapshot file in system file manager
  • UI: "Open Snapshot" dialog: to improve readability the snapshot file extension .snapshot is not shown in the table
  • Bug fixed: UI might not start on Mac OS X
  • NEW FEATURE: ALLOCATED OBJECT COUNTING, A LIGHT-WEIGHT OBJECT ALLOCATION RECODING MODE:
  • Allocated object counting is a new allocation recording mode which is an alternative to the traditional full-featured recording of allocated object stacks and remembering where of particular instances were created.
  • It's a simplest tool allowing to quickly get insight on objects of which classes and how many are created. In particular, this allows to identify potential excessive garbage allocation problems (lots of temporary objects).
  • It's fast:
  • Object counting is specially designed to have minimal possible overhead (see detail below). Overhead is negligible in most cases.
  • Available on demand:
  • Just like traditional allocation recording, object counting is off by default. You may turn it on from the start, as well as turn on and off in runtime when necessary.
  • Measures object counts only:
  • Unlike traditional allocation recording, object counting does not provide stack traces and does not track particular instances, i.e. no allocation information for particular live object(s) is available a memory snapshot. Instead, this mode provides a list of allocated object counts by class.
  • No per-thread information:
  • Objects allocated in different threads are summed and cannot be distinguished.
  • Based on bytecode instrumentation:
  • If you disable allocation recording with the startup options disablealloc or disableall object counting will not be available.
  • Not exact: some allocations may be missed:
  • To ensure minimal overhead allocation counts are updated without taking any locks or using test-and-set style atomic operations. As the result some allocations of objects of the same class created in the same method simultaneously in parallel threads may be missed due to a race condition (non atomic integer value increment). Fortunately, the probability of such events is low, and missed allocations, if any, will normally constitute only a small fraction of all allocations.
  • USE RECOMMENDATION: START WITH ALLOCATED OBJECT COUNTING, CONTINUE WITH TRADITIONAL ALLOCATION RECORDING IF NECESSARY:
  • Use object counting to initially detect possible problems: thanks to its low overhead you may do this even in production.
  • Further investigation may involve using traditional allocation recording to get comprehensive profiling results with stack traces (call tree).

New in YourKit Profiler 2015 Build 15014 EAP (Jan 15, 2015)

  • NEW FEATURE - CALL COUNTING, a light-weight CPU profiling mode:
  • Call counting is a new CPU profiling mode which is an alternative to CPU sampling and CPU tracing.
  • It's a simplest tool allowing to identify potential performance problems caused by suboptimal algorithms. The approach is based on assumption that method(s) with a big number of invocations may indicate a performance problem.
  • It's fast:
  • Call counting is specially designed to have minimal possible overhead (see detail below). Overhead is negligible in most cases.
  • Available on demand:
  • Just like CPU sampling and CPU tracing, call counting is off by default. You may turn it on from the start, as well as turn on and off in runtime when necessary. When call counting is on you may clear collected results.
  • Measures invocation counts only:
  • Unlike other CPU profiling modes call counting does not provide stack traces nor method times. Instead, it provides a plain method list with method invocation counts.
  • No per-thread information:
  • Method invocations from different threads are summed and cannot be distinguished.
  • No high-level Java EE statistics:
  • Probes in Auto activity mode are not activated when call counting starts. To get Java EE statistics please instead use sampling or tracing.
  • Based on bytecode instrumentation for CPU tracing:
  • If you disable CPU tracing with the startup options disabletracing or disableall call counting will not be available.
  • Not exact: some invocations may be missed:
  • To ensure minimal overhead invocation counts are updated without taking any locks or using test-and-set style atomic operations. As the result some invocations of the same method happening simultaneously in parallel threads may be missed due to a race condition (non atomic integer value increment). Fortunately, the probability of such events is low, and missed invocations, if any, will normally constitute only a small fraction of all invocations.

New in YourKit Profiler 2015 Build 15012 EAP (Dec 24, 2014)

  • CPU tracing with line numbers (see build 15008): performance improvements and bug fixes
  • Other minor bug fixes and improvements

New in YourKit Profiler 2015 Build 15010 EAP (Dec 24, 2014)

  • Bug fixed: exception when running IDE integration and EE server integration wizards (regression in build 15008)
  • "Memory | Contained Objects" action: added support of special collection implementation classes java.util.Collections$SynchronizedCollection, java.util.Collections$UnmodifiableCollection, java.util.Collections$SynchronizedMap, java.util.Collections$UnmodifiableMap

New in YourKit Profiler 2015 Build 15008 EAP (Dec 24, 2014)

  • CPU tracing results now include exact source code line numbers
  • Profiling overhead considerations:
  • We decided to enable line number recording by default because, according to our tests, it usually adds almost no extra tracing overhead even in call-intensive applications: the difference is usually less than 5% when CPU tracing is running and even smaller when CPU tracing is not running
  • Unfortunately, in some rare cases the extra overhead may be significant (+10% and more). To avoid it you may disable bytecode instrumentation for line number recording by specifying startup option _tracing_disable_lines (note it starts with underscore)
  • CPU tracing no longer applies user-defined filters in runtime. Instead, the adaptive tracing mode allows to reduce tracing overhead automatically
  • Because CPU tracing was the only profiling mode applying filters in runtime, the filters are now applied in UI only across the profiler and their only purpose now is to improve result presentation. It's no longer needed to re-run profiling to apply the filter change in UI
  • IBM Java: profiling overhead has been significantly reduced
  • Caveat: as the result, the following profiling capabilities are no longer enabled by default
  • exception telemetry
  • local variable names in memory snapshots (stacks and threads are not affected)
  • You may return them (as well as associated overhead) by specifying startup options _enable_exception_events and _with_local_vars respectively

New in YourKit Profiler 2015 Build 15006 EAP (Dec 24, 2014)

  • CPU tracing: adaptive tracing is much more efficient now: remaining overhead for excluded methods was dramatically reduced
  • CPU profiling: UI: memory footprint of loaded CPU sampling or CPU tracing profiling results has been greatly reduced
  • Memory profiling: UI: actions Memory | Instances by Class... (Ctrl+N) and Memory | Class Itself (java.lang.Class) by Name... (Ctrl+Shift+N) improved: the pattern is now applied as a substring of the full class name, not as strictly a prefix of the class short name. In particular this allows to
  • open inner classes by short name ("Entry" for "Map$Entry")
  • specify a name part in the middle, not only a starting prefix ("Map" for "HashMap")
  • specify a package ("com.foo.*Wrapper*")
  • Memory profiling: UI: camel hump notation support in filters was improved in "Class list" and "Class loaders" views
  • Agent: bytecode instrumentation optimizations and bug fixes. In particular, the changes solves issues with Groovy classes and classes obfuscated with ProGuard
  • Probes: built-in probe Processes: added recording of the process identifier (PID)
  • Caveat: although profiling of Java 6 applications remains fully supported, the profiler UI itself now requires Java 7 or newer to run

New in YourKit Profiler 2014 Build 14116 (Dec 24, 2014)

  • UI: minor bug fixes
  • Triggers: bug fixed: PrintMessage action output to stdout might not show up immediately because it was not properly flushed
  • FreeBSD: improvement: the agent no longer requires to install an appropriate version of libstdc++.so.6

New in YourKit Profiler 2014 Build 14114 (Nov 27, 2014)

  • IDE integration: "Open in IDE" action: improved navigation to methods with generic parameters in IntelliJ IDEA
  • IDE integration: "Open in IDE" action: bug fixed: the primary target (F7) in CPU tracing call trees which do not have line numbers was the selection's caller method instead of the selected method itself
  • IDE integration: Eclipse plugin now exports package com.yourkit.eclipse34Plugin to allow tool developers providing custom launch configuration types enable their profiling. See the original request.
  • UI: problem solved: possible java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData error on Linux under certain rare circumstances
  • Memory profiling: UI: bug fixed: invoking menu on a huge string or char[] worked slowly and might result in an OutOfMemoryError
  • Memory profiling: problem solved: Java 6 memory snapshots might not load because the JVM erroneously reports a negative size for arrays larger than 2 GB

New in YourKit Profiler 2014 Build 14112 (Nov 17, 2014)

  • Welcome screen: bug fixed: UI might become irresponsible if the Java API calls for enumeration of locally running JVMs took too much time for some reason
  • The profiler launcher by default searches for installed JVM versions in the following priority order: Java 8, Java 7, Java 6. Although the newest JVMs provide the best user experience in most cases, some Macs may suffer from the Java 8 or Java 7 crashes on startup. To solve the problem run the profiler with an older Java version instead, e.g. Java 7 instead of Java 8, or even Java 6 instead of Java 7.
  • To explicitly specify with which Java to run the profiler please create a text file ~/.yjp/java.txt with a single line containing the preferred version prefix, e.g. 1.7 for Java 7 or 1.6 for Java 6. For example, run the following command in console to force using Java 7:
  • mkdir ~/.yjp 2>/dev/null ; echo "1.7" > ~/.yjp/java.txt
  • Serviceability (non-Windows only): to simplify support case investigation, a HotSpot JVM crash log file hs_err_pid, if created in a standard location, is automatically copied to the profiler agent log file directory ~/.yjp/log
  • Agent: bug fixed: possible agent crash under certain rare circumstances; in particular, the problem might appear when using ~/.yjp/bci_filter.txt settings (see changes in 14104) or when capturing memory snapshots on some JVMs
  • CPU profiling: adaptive CPU tracing bug fixed
  • Mac OS X: the oldest supported version is now 10.6
  • UI: minor bug fixes

New in YourKit Profiler 2014 Build 14110 (Oct 23, 2014)

  • Agent: bug fixed: custom probes with callback methods without parameters might lead to a VerifyError in some cases
  • Linux: bug fixed: the list of locally running applications did not indicate processes as being 32-bit or 64-bit if their executable was specified with a relative path in the command line. Also, attach to such processes might result in printing actually false JVM warning "You have loaded library /libyjpagent.so which might have disabled stack guard"
  • UI: performance issue solved: a change of the selected slave view tab might lead to unnecessary update of its content
  • Memory profiling: UI: bug fixed: when objects allocated in particular source code line were opened in a new tab, the tab title and description were badly formed
  • JRE 8 is now bundled with the Windows installer and Linux tar.gz archive instead of JRE 7. This change only affects the Java version used to run the profiler UI itself; profiling of applications running on Java 6 or newer remains fully supported.

New in YourKit Profiler 2014 Build 14108 (Oct 7, 2014)

  • IDE integration: IntelliJ IDEA: special handling of profiling settings stored with older versions of the plugin has been added to avoid unnecessary changes in project files
  • IDE integration: "Open in IDE" action uses a more compact navigation target description to prevent too wide menu items
  • CPU profiling: What-if: bug fixes

New in YourKit Profiler 2014 Build 14106 (Oct 1, 2014)

  • Triggers: if triggers are specified on startup and each time the trigger configuration changes in runtime an event is added to the "Messages" table in the "Events" tab
  • Bug fixed: the profiler might fail to attach the agent to a running JVM in some rare cases
  • Caveat: it's possible that an application that was previously shown as "Ready for attach" and to which the profiler was indeed able to attach is now shown as "Started without agent" and cannot be attached by clicking its entry in the list. In this case attach to the application by using the "Attach by PID" link.
  • UI: minor bug fixes

New in YourKit Profiler 2014 Build 14104 (Sep 16, 2014)

  • IDE integration: Open in IDE improved and streamlined
  • The action "Open in IDE (F7)" now always acts immediately, without showing the target chooser popup. In case of two available targets it opens the primary one. The second target can be opened with a new action "Open in IDE (Alternate) (F8)". For convenience, the shortcut F8 works in case of a single target too, doing the same as F7 would do.
  • Both actions, when seen in a menu, now explicitly show the navigation target for current context, making it obvious what they will do.
  • Also, primitive types (int, char etc.) are never offered for opening because no IDE can do anything meaningful for them
  • IDE integration: IDEA 14 EAP supported
  • Agent: added ability to prevent bytecode instrumentation of particular classes and methods by specifying their patterns in a config file ~/.yjp/bci_filter.txt. The pattern format is the same as for the filters. The file does not exist by default, create it if necessary. To specify several patterns please put one pattern per line.

New in YourKit Profiler 2014 Build 14102 (Sep 11, 2014)

  • Memory profiling: object explorer: class-specific object presentation: the path is immediately shown, if available, for java.io.RandomAccessFile, java.io.FileInputStream, java.io.FileOutputStream, sun.nio.ch.FileChannelImpl
  • Agent: performance charts' supporting probe SocketsLW overhead reduced
  • CPU profiling: Thread.sleep() was removed from the "zero-time methods" list and will no longer be excluded by default from the profiling results. If you want to exclude it please use the "What-if" feature.
  • Automatic deobfuscation: the profiler offers to reopen the snapshot in a single click to apply changed settings
  • UI: optimizations in table rendering

New in YourKit Profiler 2014 Build 14100 (Sep 5, 2014)

  • CPU profiling: Java EE high-level statistics: the option to include statement preparation calls is back
  • Agent: bug fixed: instrumenting classes with very long methods might lead to a VerifyError under certain rare circumstances

New in YourKit Profiler 2014 Build 14098 (Sep 4, 2014)

  • Agent: bug fixed: possible deadlock in the performance charts supporting probe DatabasesLW
  • Problem solved: due to a Java bug the profiler UI failed to start on a pure IPv6 machine

New in YourKit Profiler 2014 Build 14096 (Sep 3, 2014)

  • Bug fixed: Windows: a memory snapshot could not be captured or opened if its file path contained non-ASCII characters
  • Other bug fixes

New in YourKit Profiler 2014 Build 14094 (Sep 3, 2014)

  • Memory profiling: "HashMap hash code distribution" inspection: added support of ConcurrentHashMap
  • Memory profiling: action Memory | Contained Objects: more collection and map classes supported
  • Memory profiling: Merged paths: optimization
  • Triggers: new action "Alarm" provides an ability to show a notification in the profiler UI when particular event happens, e.g. when memory usage reaches a threshold or CPU usage is high for some period of time.
  • "Alarm" action is similar to "PrintMessage" action, it also allows to specify a free form text message with macros which will be written to the "Messages" table.
  • When the profiler connected to a running application detects the alarm message, it shows a notification pop up.
  • Snapshot comparison: bug fixed: incorrect results for methods with big line numbers
  • IDE integration: navigation action might fail with an internal error for some nodes in snapshot comparison results
  • Other bug fixes

New in YourKit Profiler 2014 Build 14092 (Sep 3, 2014)

  • Performance charts: Databases: Statement and PreparedStatement calls are shown separately, new graphs added to show statement open/close rate and duration
  • IDE integration: Open in IDE action: when multiple targets are shown in the popup window, the first target, mostly popular, can be chosen by pressing F7. It's the same key which invokes the action. This allows to immediately open the first target by pressing F7 twice.
  • Memory profiling: object explorer: class-specific object presentation: hash map chunk sizes are shown - see elements of the array referenced from the table field
  • Memory profiling: new action Memory | Contained Objects supersedes previously existed Memory | Array Elements and opens all objects contained in selected arrays, collections and maps; for maps it offers to open keys only, values only, keys and values, or map entry objects. Please note the action also works on the head element of each map chunk, opening elements in this particular chunk only, which is useful for hash code distribution analysis.
  • Memory profiling: "HashMap hash code distribution" inspection: added support of WeakHashMap and HashTable
  • Memory profiling: object views: bug fixed: slave views might not update when multiple objects were selected in the master table
  • Bug fixed: possible license key issues on systems with multiple active network interfaces

New in YourKit Profiler 2014 Build 14066 EAP (Aug 8, 2014)

  • UI: table performance improved
  • Memory profiling: UI: object views performance improved
  • Memory inspections: inspection "Highly referenced objects": result presentation improved: maximum reference count among class instances is shown for class grouping nodes
  • Performance charts: overhead reduced

New in YourKit Profiler 8.0.3 (Aug 28, 2013)

  • Probes: new probe Processes monitors external processes launched from within the profiled application. For each started process are available: where the process was launched (thread and stack trace), when it was launched, when it finished, its executable file name, command line, environment variables, working directory, exit code (for finished processes).
  • UI: Welcome screen: more Visual Studio internal processes are now filtered out by default in the list of locally running applications offered for profiling
  • Bug fixed: possible PInvokeStackImbalance when the profiled application runs in debug mode with probes enabled
  • Bug fixed: possible exception when opening a snapshot captured in older profiler versions
  • Bug fixed: possible crash with enabled probes if .NET Framework 4.5 was not installed
  • Bug fixed: profiler might fail on Vista 64-bit
  • Bug fixed: agent: possible crash in attach mode
  • UI: minor bug fixes