YourKit Java Profiler Changelog

What's new in YourKit Java Profiler 2023.9 Build 96

Sep 19, 2023
  • JVM support:
  • Java 21 is supported.
  • Linux support:
  • Profiler UI has been ported to the Linux arm64 platform. Now you can launch profiler UI on your lovely Raspberry Pi, or on the powerful Arm workstations.
  • The minimal supported glibc version for the profiler agent on x86 and x64 platforms is 2.17. It corresponds to the RHEL 7.
  • macOS support:
  • arm64 and x64 macOS disk images can be downloaded separately. This reduces the size of the downloaded app in comparison with a previous version, which was a universal app.
  • The stability and robustness of the auto-updater tool has been improved.
  • The minimal supported macOS version for the profiler UI is now macOS 10.15.
  • Windows support:
  • Profiler UI has been ported to the Windows arm64 platform. Now you can launch profiler UI without emulation on your Windows arm64 laptops.
  • The minimal supported Windows version for the profiler UI is now Windows 10.
  • Java Flight Recorder support:
  • Allocation flame graph is available in the JFR snapshots.
  • YourKit Connection Broker:
  • Connection Broker shows CPU utilization in the application list for applications running with the profiler agent 2023.9.
  • 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:
  • Authentication with encrypted PPK Version 3 key file is supported. In particular, profiler supports PuTTY keys with the Argon2 hashing scheme.
  • 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:
  • The profiler supports drag and drop. Now, in order to open a snapshot, you can simply drag and drop it into the profiler window.
  • Improved responsiveness of the user interface, when synchronizing with the profiler agent.
  • Smoother animations on Windows.
  • Memory profiling:
  • 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.
  • In several cases some Object[] objects were shown as system classes in the GC roots view.
  • IDE integration:
  • Eclipse 2023-09 is supported.
  • Integration with IntelliJ IDEA installed via JetBrains Toolbox 2.0 is supported.
  • MyEclipse 2023.1 is supported.
  • NetBeans 19 is supported.
  • TomEE run configuration is supported in Eclipse.
  • TomEE run configuration is supported in IntelliJ IDEA.
  • EE server support:
  • Java server integration wizard now supports TomEE server.
  • Java server integration wizard now supports Open Liberty server.
  • WildFly 29 server is supported.
  • Support of Apache Geronimo server is discontinued.
  • Events:
  • MongoDB driver version 4.10 is supported.
  • Cassandra Datastax Java Driver 4.17 is supported.
  • Miscellaneous:
  • New command line options -license-key= and -accept-eula to enter the license key and accept profiler EULA, which can be used for unattended installation.
  • 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.
  • Support of FreeBSD is deprecated and scheduled for removal. YourKit Java Profiler 2023.9 is the last version which has native profiling agent for the FreeBSD platform.
  • Command line tool to control profiling is deprecated in favor of profiler HTTP API, and scheduled for removal. Actually, this tool is a wrapper over the profiler HTTP API, but it has less functionality and fewer capabilities. If you are already using this tool, please switch to using the HTTP API.

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

  • JVM support:
  • feature: Java 20 is supported.
  • Java Flight Recorder support:
  • improvement: 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.
  • improvement: The profiler correctly displays C++ methods that may appear in the recorded 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 profiler 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.
  • feature: The Threads view has been updated to display Blocked and Waiting with timeout states separately, whereas previously they were included under the Waiting state.
  • 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.
  • fix: It was not possible to run Undo "Expand Filtered Calls" action with the keyboard shortcut Ctrl+Z.
  • IDE integration:
  • feature: Profiling of JAR application configurations is supported in IntelliJ IDEA.
  • feature: The profiler finds JFR snapshots that have been saved by IntelliJ IDEA in the ~/IdeaSnapshots directory.
  • 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: Cassandra Datastax Java Driver 4.15 is supported.
  • feature: DataNucleus 6.0 is supported.
  • feature: EclipseLink 4.0 is supported.
  • feature: Hibernate 6.2 is supported.
  • feature: JUnit5 lifecycle annotations from org.junit.jupiter package are 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 files 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 Java Profiler 2022.9 Build 162 (Oct 2, 2022)

  • YourKit Connection Broker:
  • feature: We are excited to introduce the new YourKit Connection Broker feature, that makes profiling in clouds, containers and clustered environments super easy and convenient.
  • The broker greatly simplifies connectivity between profiler UI and profiler agent, and brings extra layer of security and fine-grained control for accessing the profiled applications.
  • feature: Profiler agent got two new startup options broker_url and broker_token to connect to the broker.
  • JVM support:
  • feature: Java 19 supported.
  • feature: We announce experimental support of the DCEVM ("Dynamic Code Evolution Virtual Machine") JVM. The support is not production ready, we do not give any guarantee regarding stability. Please use it at your own discretion.
  • To profile this JVM, you need to disable bytecode instrumentation of some core classes by creating the file /.yjp/bci_filter.txt with the following lines:
  • jdk.internal.*
  • java.*
  • +java.io.*
  • With this workaround, all our internal tests pass successfully for the latest release Dcevm-11.0.15+1 (2022-04-28).
  • Alpine Linux arm64 support:
  • feature: Profiling on Alpine Linux on arm64 architecture is supported. The new agent library is available in the bin/linux-musl-arm-64 directory.
  • Windows arm64 support:
  • feature: Profiling on Windows on arm64 architecture is supported. The new agent library is available in the bin/windows-arm-64 directory.
  • Security:
  • feature: New agent startup option listen=none allows to completely disable incoming TCP connections. This option is automatically applied when using YourKit Connection Broker.
  • feature: Profiler supports ed25519 SSH keys which are used in the latest OpenSSH servers.
  • feature: We greatly improved compatibility with the latest OpenSSH servers by supporting new cipher algorithms like rsa-sha2-256, rsa-rsa2-512, [email protected], [email protected] and many others.
  • feature: It is now possible to perform SSH authentication through ssh-agent.
  • User interface:
  • feature: The instances of java.lang.Record class are marked in the object explorers with the special icon.
  • feature: The Add Remove Connection action has been transformed into the wizard. The wizard brings new YourKit Connection Broker option, allows to build SSH tunnel to the destination host, and improves user experience.
  • Memory profiling:
  • improvement: We have done a great work on optimizing the reading of memory snapshots. Profiler loads memory snapshots up to 30% faster.
  • improvement: Duplicate strings, Duplicate objects and Inefficient primitive data type usage memory inspections are now up to 5 times faster.
  • IDE integration:
  • feature: Eclipse 2022-09 supported.
  • feature: MyEclipse 2022.1.0a supported.
  • feature: NetBeans 15 supported.
  • Events:
  • feature Hibernate 6.1 supported.
  • Miscellaneous:
  • feature: If you need to specify a lot of agent options, or use same options for multiple projects you may find useful new options_file option.
  • fix: macOS version which is shown in Summary tab did not always represent actual version, it might show a lower version instead.
  • improvement: Deadlock detector no longer reports a false positive in Log4j2's AsyncAppenderEventDispatcher when the Async appender is used.
  • improvement: The win32 and win64 profiler agent directories have been renamed to windows-x86-32 and windows-x86-64 respectively, to explicitly reflect agent architecture and for consistency with other platforms.
  • caveat: Agent startup option sessionname has been renamed to app_name.
  • caveat: Due to low customer demand and high maintenance costs, FreeBSD has been reclassified as an advanced platform. Profiling on FreeBSD now requires an active support contract with the advanced tier.

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

  • JVM support:
  • Java 18 supported.
  • Alpine Linux support:
  • Native agent for musl-based Linux distributions such as Alpine Linux is now provided. The x86-64 agent library is available as bin/linux-musl-x86-64/libyjpagent.so
  • Docker support:
  • ZIP archive with profiler agent binaries now contains agent for Alpine Linux. You can download this archive in your Docker files.
  • 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:
  • The profiler UI can open compressed JFR files.
  • User interface:
  • The startup speed of the UI has been improved.
  • In Threads view, in some case the thread was displayed as running, while it was actually waiting in the native code.
  • ⌘ keyboard modifier is now used instead of Ctrl to toggle selection in lists on macOS.
  • CPU profiling:
  • CPU sampling shows the sample count in addition to time.
  • 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.
  • Asynchronous sampling is supported on a wide range of platforms:
  • Linux: x64, x86, ARM 32-bit (ARMv7 and higher, hard-float), ARM 64-bit (AArch64), ppc64le
  • macOS: x64, arm64
  • Effectively, the asynchronous sampling mode is available on all supported macOS and Linux architectures except for ppc64 (i.e. big endian).
  • 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.
  • 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:
  • 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.
  • 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.
  • Command line tool received the new command start-alloc-object-counting for starting object allocation recording in the object counting mode.
  • "Clear Telemetry" action did not reset total allocated count and size.
  • IDE integration:
  • Eclipse 2022-03 supported.
  • IntelliJ IDEA 2022.1 supported.
  • NetBeans 13 supported.
  • EE server support:
  • WebSphere Liberty 22 supported.
  • WildFly 26 supported.
  • Events:
  • Hibernate 6.0 supported.
  • OpenJPA 3.2 supported.
  • Miscellaneous:
  • New agent startup option onexit=hprof has been added to complement the existing options onexit=memory and onexit=snapshot.
  • 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.
  • FreeBSD 32-bit (i386) is no longer supported. Note that FreeBSD 64-bit (amd64) remains a fully supported platform.
  • 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.
  • 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.
  • Incorrect error message when activating the profiler without the Internet connection.

New in YourKit Java Profiler 2021.11 Build 219 (Nov 28, 2021)

  • JVM support:
  • feature Java 17 supported.
  • feature OpenJ9 release 0.29.x supported.
  • Java Flight Recorder support:
  • feature Java Flight Recorder (JFR) support has been added. The profiler is now able to open JFR recording files (.jfr). You can analyze JFR recordings by using the powerful features that the profiler provides for its own performance snapshots.
  • Networking:
  • feature We have completely reimplemented transport layer of communication between profiler UI and agent. The communication is now implemented on top of HTTP, WebSocket and SSL which gives an ability to proxy traffic though the HTTP proxies like Apache and Nginx.
  • feature Connection to the profiler agent is now possible through SOCKS v5 proxies.
  • feature Communication between profile UI and profiler agent is now always encrypted by SSL. Profiler agent generates self-signed SSL certificates on the fly to achieve maximum security, when trusted SSL certificate is not available.
  • feature Profiler agent exposes HTTP API. API is based on HTTP requests and JSON responses, so you can use any tool of your choice to send the requests, parse responses and automate profiling in your environment.
  • feature Profiler agent has the options to comprehensively configure SSL encryption: chain of SSL certificates, secret key and password.
  • feature New option Trust All SSL certificates in Settings menu disables SSL certificate validation. It is crucial to disable the certificate validation when you run the profiler in a company network where the network traffic is analyzed by MITM proxy servers intercepting and substituting SSL certificates.
  • Trust all SSL certificates
  • feature Profiler API com.yourkit.api.controller.Controller and CLI interface got an ability to connect to the agent behind the reverse HTTP proxies, by specifying reverse proxy path.
  • feature API of com.yourkit.api.controller.Controller.Builder allows to specify connection timeouts.
  • fix HTTP proxy authentication might not work in several circumstances.
  • fix HTTP proxy detection did not work on Linux with GNOME desktop environment.
  • fix Profiler UI might fail to check updates on macOS 12.0 Monterey.
  • User interface:
  • feature Optional reverse HTTP proxy path can be configured when creating connection to the remote agent.
  • Reverse proxy path
  • improvement No matter if a method in a call tree is filtered or not, when it is expanded, the UI now always shows all sub-nodes with line numbers.
  • improvement Remote snapshot transfer progress is now cancellable.
  • fix Missing popup menu "Expand/Collapse" items.
  • fix The profiler UI might freeze after the profiled application terminated.
  • fix Internal error on attempt to open an invalid ZIP-ed (.zip) or GZIP-ed (.gz) snapshot.
  • fix Open snapshot dialog silently didn't show HPROF and PHD snapshots in the list if the file header could not be read.
  • fix Depended view now keeps the sorted column when selection in the top table changes.
  • fix Hyperlinks in trees might not work in several circumstances.
  • fix Type to search feature did not scroll enough horizontally, so the matched text might be in invisible area.
  • fix Toolbar buttons flickered just after connecting to the agent.
  • CPU profiling:
  • feature "CPU" tab: the live view now shows the call tree by thread in addition to the call tree with all threads merged.
  • CPU usage by thread
  • fix HPROF dumps with CPU samples: undervalued sample counts.
  • Memory profiling:
  • feature "Memory" tab: the Allocations section now shows the call tree by thread in addition to the call tree with all threads merged.
  • Allocations by thread
  • feature "Memory" tab: the Allocations section now shows the depended Classes view with per-class allocation statistics not only for a memory snapshot, but also for a live session, a performance snapshot and a JFR recordings file.
  • Live allocations by class
  • feature "Performance Charts": allocated object memory graph is show in addition to the allocated object count graph.
  • Allocated object memory graph
  • IDE integration:
  • feature Eclipse 2021-09 supported.
  • feature MyEclipse 2021.5 supported.
  • caveat Minimal supported MyEclipse version is now MyEclipse 2014.
  • feature IntelliJ IDEA 2021.3 supported.
  • feature IntelliJ IDEA: Open in IDE action tries to open a core class from the appropriate JDK if the project uses multiple JDKs.
  • feature NetBeans 12.4 supported.
  • EE server support:
  • feature GlassFish 6.2 is supported.
  • feature JBoss 7.4 is supported.
  • feature WebSphere Liberty 21 is supported.
  • feature WildFly 25 is supported.
  • caveat Minimum supported GlassFish version is now 4.0.
  • Events:
  • fix "Events" tab: focus might be lost when navigating the event table selector.
  • improvement Tab 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
  • Miscellaneous:
  • feature Automatic deobfuscation: line number deobfuscation is supported for Zelix KlassMaster (ZKM).
  • feature Profiler API: new class com.yourkit.api.controller.Controller should be used to control profiling. The old class com.yourkit.controller.Controller still works but is deprecated and scheduled for removal.
  • feature Profiler agent writes information about client HTTP requests in the log file.
  • caveat Profiler API: com.yourkit.controller.Controller methods startExceptionProfiling() and startMonitorProfiling() no longer throw an exception if the corresponding profiling mode is already on; they do nothing instead. Also, if startExceptionProfiling() is called when exception profiling is off, previous exception profiling results are cleared.
  • improvement Agent startup option "listen" in the advanced mode accepts an IP address only.
  • improvement For security, the profiler agent no longer opens socket on loopback if socket address is specified with the agent startup option "listen".
  • caveat Solaris is no longer supported.
  • caveat HP-UX is no longer supported.
  • caveat 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.
  • caveat AIX ppc 32-bit is no longer supported. Note that AIX ppc64 (64-bit) remains a fully supported platform.
  • caveat Minimal supported macOS version is now Mojave (10.14).
  • caveat Minimal supported FreeBSD version is now 12.
  • 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.
  • CPU usage estimation action and view in "Events" tab are hidden from the UI, and scheduled for removal. If your need this feature, please . 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.
  • FreeBSD 32-bit (i386) support. Note that FreeBSD 64-bit (amd64) remains a fully supported platform.
  • The profiler API class com.yourkit.controller.Controller is deprecated for removal. Use the new profiler API class com.yourkit.api.controller.Controller instead.
  • Agent startup options skip_advanced_port_check and do_advanced_port_check are no longer needed and have no effect if specified.

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

  • Mac on Apple silicon:
  • Mac on Apple silicon is now natively supported. The platform is also known as M1, ARM 64, arm64, aarch64.
  • Both the profiler agent and the profiler UI run on Apple silicon natively without Rosetta emulation layer.
  • JVM support:
  • JDK 16 supported.
  • JDK 7 support deprecated in version 2020.7 was discontinued. The last version supporting Java 7 is YourKit Java Profiler 2020.9.
  • User interface:
  • 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.
  • Callees list renamed to Callee list.
  • 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.
  • Main menu: the sub-menu Tools | Profile was moved to the top level item Profile.
  • The profiler window might not show up because of a slow enumeration of locally running processes.
  • 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.
  • In SSH configuration it was impossible to choose private SSH key from the hidden directory.
  • The "system" color theme deprecated in version 2020.7 was finally removed.
  • 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.
  • 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 Java Profiler 2020.9 Build 424 (Feb 25, 2021)

  • Bug fixes and performance improvements.

New in YourKit Java Profiler 2020.9 Build 419 (Feb 25, 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 Java Profiler 2020.9 Build 416 (Feb 25, 2021)

  • IDE integration: Eclipse 2020-12 (4.18) supported.
  • IDE integration: MyEclipse 2020.9 supported.
  • Runtime updated.

New in YourKit Java Profiler 2020.9 Build 414 (Feb 25, 2021)

  • IDE integration: IntelliJ IDEA 2020.3 supported.

New in YourKit Java Profiler 2020.9 Build 412 (Feb 25, 2021)

  • 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 Java Profiler 2020.9 Build 411 (Feb 25, 2021)

  • 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 Java Profiler 2020.9 Build 410 (Feb 25, 2021)

  • 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 Java Profiler 2020.9 Build 408 (Feb 25, 2021)

  • 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 Java Profiler 2020.9 Build 405 (Sep 16, 2020)

  • JVM support:
  • feature JDK 15 supported.
  • Events:
  • 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.
  • 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.
  • IDE integration with IntelliJ IDEA 14 and 15. The oldest supported version will be IntelliJ IDEA 2016.
  • Dedicated support of JRun in the Java EE server integration wizard.
  • Solaris 32-bit agents.

New in YourKit Java Profiler 2020.7 Build 367 (Jul 30, 2020)

  • JVM support:
  • feature JDK 14 supported.
  • feature SapMachine OpenJDK supported.
  • feature Amazon Corretto Java 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.
  • feature Support of trackpads and trackballs pointing devices on Linux.
  • improvement Colors in bright and dark themes were tweaked to make texts more contrast and readable.
  • feature Profiler UI respects "bright" or "dark" appearance settings under macOS and adapts color theme according to system preferences.
  • 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. stacks which are legally frozen for a long time.
  • For each potentially deadlocked or hanged thread the Deadlocks view shows a link to ignore it. Once ignored, the stack will no longer be reported as a potential deadlock.
  • Ignored false positive deadlocks are stored in the file/.yjp/deadlock_ignore_list.txt. This file can be deleted to reset to defaults.
  • 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.
  • fix Profiler UI did not restore size and position of application window after restart.
  • fix Export to PNG might produce blurry text.
  • fix Action Show in File Manager might fail on Ubuntu 2020.04.
  • 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.
  • feature Time axis is exported to PNG. Previous versions exported only graph and value axis.
  • 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 /.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 .
  • and vice versa, for a bundle class loader its OSGi bundle is shown as the pseudo-field .
  • 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

New in YourKit Java Profiler 2019.8 Build 108 (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 Java Profiler 2019.1 Build 133 (Jul 4, 2019)

  • macOS application is now notarized to meet macOS 10.14.5 security requirements
  • Bug fixed: improper session name for a profiled application launched with Java command line options --module-path/-p or --upgrade-module-path
  • Other bug fixes

New in YourKit Java Profiler 2019.1 Build 127 (Jul 4, 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 Java Profiler 2019.1 Build 117 (Jul 4, 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 Java Profiler 2019.1 Build 114 (Jul 4, 2019)

  • IDE integration: Eclipse 2019-03 supported
  • Bug fixed: snapshot with many process events loaded slowly, might fail with out of memory error

New in YourKit Java Profiler 2019.1 Build 113 (Jul 4, 2019)

  • Java 12 supported
  • IDE integration: IntelliJ IDEA 2019.1 supported
  • Bug fixed: no events were recorded for java.io.FileInputStream and java.io.FileOutputStream on Java 11+
  • Bug fixed: memory profiling: assertion failed while opening memory snapshots with certain data pattern
  • Bug fixed: improper session name when profiling from within IntelliJ IDEA on certain JDKs
  • Bug fixed: IDE integration: plugin configuration file was silently rewritten by launching an older profiler UI version, resulting in wrong agent being used in "Profile" action
  • Bug fixed: snapshot annotation edited from the recent snapshot list was not immediately updated in the open snapshot dialog

New in YourKit Java Profiler 2019.1 Build 112 (Feb 28, 2019)

  • Bug fixed: HBase built-in probe issued warnings to the agent log
  • Bug fixed: Welcome screen: custom session name was not shown for local applications

New in YourKit Java Profiler 2019.1 Build 111 (Feb 14, 2019)

  • Memory profiling: bug fixed: HPROF snapshot could not be captured for AdoptOpenJDK.net OpenJDK with HotSpot
  • Bug fixed: pressing ESC during snapshot loading might cause internal error
  • Bug fixed: profiler UI does not start on Linux if installation path contains spaces

New in YourKit Java Profiler 2019.1 Build 110 (Feb 4, 2019)

  • Bug fixed: UI might crash on macOS when connecting to long running JVM

New in YourKit Java Profiler 2019.1 Build 109 (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 /.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 Java Profiler 2018.04 Build 88 (Jan 3, 2019)

  • Critical UI bug fixed: multiple internal error dialogs on attempt to start profiling or some other operations.
  • IDE integration: Eclipse 4.9 supported
  • Attach mode: minor bug fixes

New in YourKit Java Profiler 2018.04 Build 87 (Nov 23, 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 Java Profiler 2018.04 Build 86 (Oct 14, 2018)

  • Agent: bug fixed: NPE in the telemetry thread when running on a JVM without sun.misc.Unsafe available
  • Inspections: bug fixed: possible internal error when quickly clicking "Run All" multiple times a row

New in YourKit Java Profiler 2018.04 Build 83 (Sep 13, 2018)

  • Remote profiling: JSch SSH library upgraded to version 0.1.54

New in YourKit Java Profiler 2018.04 Build 82 (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 Java Profiler 2018.04 Build 81 (Aug 1, 2018)

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

New in YourKit Java Profiler 2018.04 Build 80 (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 Java Profiler 2018.04 Build 75 (Jul 2, 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 Java Profiler 2018.04 Build 73 (Jun 14, 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 Java Profiler 2018.04 Build 71 (May 29, 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 Java Profiler 2018.04 Build 70 (May 23, 2018)

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

New in YourKit Java Profiler 2018.04 Build 67 (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
  • UI: improvement: profiler uses native cut/copy/paste shortcuts in Dark theme on macOS

New in YourKit Java Profiler 2018.04 Build 66 (May 15, 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 Java Profiler 2018.04 Build 64 (May 5, 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 Java Profiler 2018.04 Build 61 (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 :. 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 :. Note that access to the port can be additionally restricted with a firewall.
  • Advanced: listen= 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=-.
  • 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 Java Profiler 2018.04 Build 59 EAP (Apr 28, 2018)

  • Bug fixes.

New in YourKit Java Profiler 2018.04 Build 58 EAP (Apr 27, 2018)

  • Bug fixes.

New in YourKit Java Profiler 2018.04 Build 57 EAP (Apr 25, 2018)

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

New in YourKit Java Profiler 2018.04 Build 56 EAP (Apr 23, 2018)

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

New in YourKit Java Profiler 2018.04 Build 54 EAP (Apr 19, 2018)

  • Bug fixed: attach didn't work on macOS.

New in YourKit Java Profiler 2018.04 Build 53 EAP (Apr 18, 2018)

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

New in YourKit Java Profiler 2018.04 Build 51 EAP (Apr 12, 2018)

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

New in YourKit Java Profiler 2018.04 Build 50 EAP (Apr 10, 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 Java Profiler 2018.04 Build 48 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
  • Simplified and improved profiling in Docker containers
  • 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=-. 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.
  • macOS: the profiler is now distributed as .dmg bundle
  • macOS: JetBrains Open JDK for is bundled to improve UI quality, e.g. font rendering
  • macOS: .snapshot files associated with the profiler application
  • macOS: prevent the automatic switching to the discrete GPU if the machine has multiple GPUs
  • macOS: on-screen menu bar for Dark theme too
  • 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 Java Profiler 2017.02 Build 75 (Feb 10, 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 Java Profiler 2017.02 Build 71 (Jan 23, 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 Java Profiler 2017.02 Build 68 (Nov 17, 2017)

  • 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 /.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 Java Profiler 2017.02 Build 67 (Nov 9, 2017)

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

New in YourKit Java Profiler 2017.02 Build 66 (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= in /.yjp/ui.ini.
  • Bug fixes

New in YourKit Java Profiler 2017.02 Build 65 (Aug 30, 2017)

  • Bug fixed: memory snapshot comparison broken with duplicate entries.

New in YourKit Java Profiler 2017.02 Build 63 (Jul 5, 2017)

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

New in YourKit Java Profiler 2017.02 Build 61 (Jun 9, 2017)

  • Bug fixes and performance improvements.

New in YourKit Java Profiler 2017.02 Build 59 (May 3, 2017)

  • IDE integration: IntelliJ IDEA 2017 supported
  • Bug fixes

New in YourKit Java Profiler 2017.02 Build 57 (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 Java Profiler 2017.02 Build 55 (Mar 10, 2017)

  • Bug fixes.

New in YourKit Java Profiler 2017.02 Build 50 (Feb 22, 2017)

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

New in YourKit Java Profiler 2017.02 Build 47 (Feb 15, 2017)

  • Minor bug fixes and improvements.

New in YourKit Java Profiler 2017.02 Build 45 (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 /.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: , , ,
  • If the property -Dyk.tmp.dir= 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.
  • 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.
  • 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.
  • 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
  • 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.
  • Other bug fixes

New in YourKit Java Profiler 2016.06 Build 41 EAP (Feb 7, 2017)

  • Bug fixes and performance improvements.

New in YourKit Java Profiler 2016.06 Build 40 EAP (Feb 1, 2017)

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

New in YourKit Java Profiler 2016.06 Build 39 EAP (Jan 28, 2017)

  • Bug fixes and performance improvements.

New in YourKit Java Profiler 2016.06 Build 38 EAP (Jan 24, 2017)

  • Threads view: improvements
  • Bug fixes

New in YourKit Java Profiler 2016.02 Build 46 (Jan 17, 2017)

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

New in YourKit Java Profiler 2016.06 Build 37 EAP (Jan 17, 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 Java Profiler 2016.06 Build 36 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 Java Profiler 2016.06 Build 35 EAP (Dec 19, 2016)

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

New in YourKit Java Profiler 2016.06 Build 34 EAP (Dec 13, 2016)

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

New in YourKit Java Profiler 2016.02 Build 45 (Dec 13, 2016)

  • Minor improvements and bug fixes.

New in YourKit Java Profiler 2016.02 Build 44 (Dec 8, 2016)

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

New in YourKit Java Profiler 2016.06 Build 33 EAP (Dec 7, 2016)

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

New in YourKit Java Profiler 2016.06 Build 32 EAP (Nov 17, 2016)

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

New in YourKit Java Profiler 2016.06 Build 31 EAP (Nov 11, 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 Java Profiler 2016.06 Build 30 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 Java Profiler 2016.06 Build 28 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 Java Profiler 2016.06 Build 27 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 Java Profiler 2016.06 Build 26 EAP (Oct 7, 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 Java Profiler 2016.02 Build 43 (Oct 5, 2016)

  • IDE integration: NetBeans 8.2 supported.

New in YourKit Java Profiler 2016.06 Build 25 EAP (Oct 5, 2016)

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

New in YourKit Java Profiler 2016.06 Build 24 EAP (Oct 4, 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 Java Profiler 2016.06 Build 23 EAP (Sep 15, 2016)

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

New in YourKit Java Profiler 2016.06 Build 22 EAP (Sep 12, 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 Java Profiler 2016.02 Build 42 (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 Java Profiler 2016.06 Build 21 EAP (Sep 8, 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 Java Profiler 2016.06 Build 20 EAP (Sep 5, 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 Java Profiler 2016.06 Build 18 EAP (Sep 1, 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 Java Profiler 2016.06 Build 17 EAP (Aug 30, 2016)

  • Bug fixed: the profiler UI might immediately disconnect after successfully connecting to a remote profiling application

New in YourKit Java Profiler 2016.02 Build 41 (Aug 30, 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

New in YourKit Java Profiler 2016.06 Build 16 EAP (Jul 26, 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 Java Profiler 2016.06 Build 15 EAP (Jun 30, 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 Java Profiler 2016.02 Build 40 (Jun 30, 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 Java Profiler 2016.06 Build 14 EAP (Jun 29, 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 Java Profiler 2016.06 Build 13 EAP (Jun 24, 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 Java Profiler 2016.06 Build 12 EAP (Jun 22, 2016)

  • Export: improvement: size of the 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 Java Profiler 2016.02 Build 39 (Jun 22, 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 Java Profiler 2016.02 Build 38 / 2016.06 Build 11 EAP (Jun 3, 2016)

  • IDE integration: IntelliJ IDEA 2016.2 supported.

New in YourKit Java Profiler 2016.02 Build 37 (Jun 2, 2016)

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

New in YourKit Java Profiler 2016.06 Build 10 EAP (Jun 2, 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.
  • 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 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.
  • Note: Eclipse plugin repository URL for this EAP is http://www.yourkit.com/download/yjp2016_06_for_eclipse/

New in YourKit Java Profiler 2016.02 Build 36 (May 4, 2016)

  • 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 Java Profiler 2016.02 Build 35 (Apr 22, 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 Java Profiler 2016.02 Build 34 (Apr 5, 2016)

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

New in YourKit Java Profiler 2016.02 Build 33 (Mar 29, 2016)

  • Mac OS X: bug fixed: exception on opening the file chooser dialog in Mac native theme
  • Minor internal improvements

New in YourKit Java Profiler 2016.02 Build 32 (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 Java Profiler 2016.02 Build 31 (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 Java Profiler 2016.02 Build 30 (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 Java Profiler 2016.02 Build 29 (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 Java Profiler 2016.02 Build 28 (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 Java Profiler 2016.02 Build 27 (Feb 29, 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
  • Mac OS X: bug fixed: table header jittering in the bright theme

New in YourKit Java Profiler 2016.02 Build 26 (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 Java Profiler 2016.02 Build 24 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 Java Profiler 2016.02 Build 23 EAP (Feb 24, 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 Java Profiler 2016.02 Build 22 EAP (Feb 21, 2016)

  • UI: bug fixed: issues with filtering in tables and trees in live views
  • Welcome screen: list of local applications: Windows, Linux, Mac OS X: new column "CPU" shows CPU utilization percent for each listed process

New in YourKit Java Profiler 2015 Build 15088 (Feb 21, 2016)

  • UI: bug fixed: possible assertion failure on profiling data update.

New in YourKit Java Profiler 2015.12 Build 21 EAP (Feb 19, 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 Java Profiler 2015.12 Build 20 EAP (Feb 5, 2016)

  • 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 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 in YourKit Java Profiler 2015.12 Build 19 EAP (Feb 1, 2016)

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

New in YourKit Java Profiler 2015.12 Build 18 EAP (Jan 28, 2016)

  • Optimization: less memory is needed to open performance snapshots.

New in YourKit Java Profiler 2015.12 Build 17 EAP (Jan 27, 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 Java Profiler 2015 Build 15086 (Jan 25, 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 Java Profiler 2015.12 Build 16 EAP (Jan 25, 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 Java Profiler 2015.12 Build 15 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 Java Profiler 2015.12 Build 14 EAP (Dec 19, 2015)

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

New in YourKit Java Profiler 2015.12 Build 13 EAP (Dec 16, 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 Java 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 Java Profiler 2015.12 Build 12 EAP (Dec 11, 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 Java Profiler 2015.12 Build 11 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 Java Profiler 2015.12 Build 10 EAP (Dec 4, 2015)

  • 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 Java Profiler 2015 Build 15082 (Dec 3, 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 Java Profiler 2015.12 Build 9 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 Java Profiler 2015 Build 15080 (Nov 25, 2015)

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

New in YourKit Java 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 Java Profiler 2015.12 Build 7 EAP (Nov 11, 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 Java Profiler 2015.12 Build 6 EAP (Nov 7, 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 Java Profiler 2015 Build 15076 (Oct 23, 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 Java Profiler 2015.12 Build 5 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 Java Profiler 2015.12 Build 4 EAP (Aug 27, 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 Java Profiler 2015.12 Build 3 EAP (Aug 25, 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 Java Profiler 2015 Build 15074 (Aug 25, 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 Java Profiler 2015.12 Build 2 EAP (Aug 14, 2015)

  • Memory profiling: memory snapshot loading speed increased and memory footprint reduced
  • Memory profiling: to save memory, native object IDs used in HPROF snapshots are by default no longer stored in memory after the snapshot loading is completed. In effect, individual objects are identified in the UI with their arbitrary indices, exactly like it works for the profiler format .snapshot files. To load the native IDs please specify -Dyjp.hprof.oids=true in /bin/ui.ini
  • Memory profiling: UI: Quick info: optimization: export of a byte array to a binary file now works much faster
  • Memory profiling: UI: optimization: Class list and other object-grouping views now open up to 2 times faster
  • 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).

New in YourKit Java 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 Java 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
  • IDE integration: Mac OS X: bug fixed: "Profile" action launched the profiler UI via generic yjp.sh instead of the application launcher
  • 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 Java Profiler 2015 Build 15068 (Jul 17, 2015)

  • 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 Java 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 Java 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 Java Profiler 2015 Build 15062 (Jun 17, 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 Java Profiler 2015 Build 15060 (Jun 5, 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 Java 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 Java Profiler 2015 Build 15054 (Apr 30, 2015)

  • License server support improvements
  • Minor bug fixes

New in YourKit Java 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 Java Profiler 2015 Build 15050 (Apr 23, 2015)

  • Bug fixes

New in YourKit Java Profiler 2015 Build 15048 (Apr 23, 2015)

  • Bug fixes

New in YourKit Java 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 Java Profiler 2015 Build 15044 (Apr 7, 2015)

  • New license server support
  • Minor bug fixes

New in YourKit Java Profiler 2014 Build 14124 (Mar 27, 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 Java Profiler 2015 Build 15040 EAP (Mar 21, 2015)

  • Various minor improvements and bug fixes

New in YourKit Java Profiler 2015 Build 15038 EAP (Mar 13, 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 Java 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 Java 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 Java 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 Java 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.
  • 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
  • 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.

New in YourKit Java 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 Java 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 Java Profiler 2014 Build 14118 (Feb 4, 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 Java 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 Java Profiler 2015 Build 15022 EAP (Feb 3, 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 Java Profiler 2015 Build 15020 EAP (Jan 27, 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. 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 Java 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 Java 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 Java 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.
  • Use recommendation: start with call counting, continue with CPU tracing or sampling if necessary:
  • Use call counting to initially detect possible problem: 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 including times and stack traces (call tree).
  • "CPU" tab component layout has been unified in live and snapshot modes
  • "Memory" tab component layout has been unified in live and snapshot modes
  • Memory profiling: 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)
  • Memory profiling: 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 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.
  • Memory profiling: 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
  • 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
  • CPU profiling: default CPU sampling settings have been changed to measure time for Thread.sleep(*) as wall time, thus making it visible by default
  • 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 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.)

New in YourKit Java 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 Java 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 Java Profiler 2014 Build 14112 (Nov 18, 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
  • Mac OS X: to address possible profiler UI crashes reported by some Mac OS Yosemite users, the profiler automatically restarts itself via yjp.sh after the crash which is a known workaround to this problem.
  • Mac OS X: added ability to explicitly specify the Java version to run the profiler UI to address possible issues with newest JVMs.
  • 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 Java 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
  • 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

New in YourKit Java 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 Java Profiler 2014 Build 14106 (Oct 1, 2014)

  • Mac OS X bundle now complies with the new code signing requirements introduced in Mac OS X 10.9.5
  • 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 Java Profiler 2014 Build 14104 (Sep 16, 2014)

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

New in YourKit Java 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 Java 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 Java 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 Java Profiler 2014 Build 14096 (Sep 3, 2014)

  • Bug fixes

New in YourKit Java 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 Java 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 Java Profiler 2013 Build 13088 (Jul 22, 2014)

  • Memory profiling: allocation recording: UI: bug fixed: altered "Record each" value was ignored under certain circumstances
  • Mac: UI: bug fixed: exception when working with tabs under certain circumstances

New in YourKit Java Profiler 2014 Build 14066 EAP (Jun 30, 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 Java Profiler 2013 Build 13086 (Jun 30, 2014)

  • Performance charts: bug fixed: the probes incorrectly reused the activity mode of similarly named built-in probes, e.g. DatabasesLW of Databases, thus could not be configured separately
  • IDE integration: Eclipse: problem solved: due to Eclipse 3.x bug, the plugin signed with Java 7 jarsigner default parameters didn't install

New in YourKit Java Profiler 2013 Build 13084 (May 27, 2014)

  • Performance charts: bug fixed: incorrect resource close counts and live times
  • Mac: bug fixed: possible java.lang.ArrayIndexOutOfBoundsException when plugging an additional display

New in YourKit Java Profiler 2013 Build 13082 (May 16, 2014)

  • Mac: the application is now digitally signed, and is no longer blocked by Gatekeeper in its default mode "Allow applications downloaded from: Mac App Store and identified developers"
  • IDE integration: Eclipse plugin is now digitally signed, preventing unsigned content warning on installation

New in YourKit Java Profiler 2013 Build 13080 (May 15, 2014)

  • IDE integration: NetBeans: bug fixed: possible class cast exception in the profiler plugin when using Maven
  • Mac: application launcher now tries to use installed JDK in the following priority: Java 7 (offers most stable UI library at the moment), Java 8, Java 6

New in YourKit Java Profiler 2013 Build 13076 (Apr 29, 2014)

  • J2EE integration wizard: Tomcat 8 supported
  • CPU tracing: bug fixed: adaptive tracing actually applied earlier than was specified with "adaptive_min_tracing_duration_ms"
  • Performance charts: bug fixed: assertion failed for some on-exit snapshots

New in YourKit Java Profiler 2014 Build 14034 EAP (Apr 17, 2014)

  • Probes: UI: "Event Timeline" reworked:
  • nested events are now shown as tree nodes;
  • column cleanup;
  • new "Time (ms)" column shows event duration;
  • new columns to explicitly show event thread and stack, if available;
  • new popup menu actions.
  • Probes: some built-in probe tables were given shorter names to improve readability in the UI
  • Probes: bug fixed: stack traces of events recorded during CPU tracing were missing the top method

New in YourKit Java Profiler 2014 Build 14030 EAP (Apr 10, 2014)

  • UI: remote profiling: built-in support for SSH tunneling has been added.

New in YourKit Java Profiler 2014 Build 14024 EAP (Apr 2, 2014)

  • Memory profiling: redesigned snapshot format improves snapshot loading. (Snapshots from the previous release still can be opened.)
  • Memory profiling: snapshot capture should should take less time in some cases
  • Memory profiling: UI: memory snapshot capture progress advances more smoothly

New in YourKit Java Profiler 2014 Build 14022 EAP (Mar 27, 2014)

  • Memory profiling: HPROF loading improvements and fixes

New in YourKit Java Profiler 2014 Build 14020 EAP (Mar 27, 2014)

  • Memory profiling: HPROF loading improvements
  • Memory profiling: Android HPROF snapshots can be loaded directly; it's no longer needed to manually convert them to the standard format with hprof-conv before opening

New in YourKit Java Profiler 2014 Build 14018 EAP (Mar 27, 2014)

  • Memory profiling: UI: object explorer: float values are shown without intermediate conversion to double, which might result in showing "noise" digits beyond the float data type precision
  • Memory profiling: UI: object explorer: class-specific object presentation: if a class has only one instance field, and the field is primitive, its value is immediately shown for the class instances
  • IBM Java 7 Release 1 supported

New in YourKit Java Profiler 2014 Build 14014 EAP (Mar 27, 2014)

  • Memory profiling: 64-bit HPROF snapshots with compressed object pointers are now detected automatically, without user interaction
  • UI: Inspections: new UI component layout uses available space more effectively, and better suits low resolution displays
  • Memory profiling: memory inspections: sets of options for some inspections streamlined, inspections themselves re-grouped

New in YourKit Java Profiler 2014 Build 14012 EAP (Mar 27, 2014)

  • Memory profiling: new inspection "Duplicate objects" finds identical objects and arrays wasting memory. It supersedes the previously existed inspection "Duplicate arrays" which worked with arrays only.
  • UI: minor improvements

New in YourKit Java Profiler 2014 Build 14010 EAP (Mar 27, 2014)

  • UI: Dark color theme support added on Mac OS X. To switch the theme use corresponding main menu items under Settings. Known issue: the main menu is inside the frame.
  • Memory profiling: more improvements in snapshot loading speed
  • Probes: built-in probe Databases: added handling of connections created when the probe was inactive. Note: the probe's default activity mode is Auto, thus the probe is inactive until CPU profiling is started.
  • Probes: built-in probe Files: added handling of files opened when the probe was inactive. Note: the probe's default activity mode is Auto, thus the probe is inactive until CPU profiling is started.
  • Probes: built-in probe Databases, performance charts: bug fixed: connections created with Driver.connect() might be skipped
  • Probes: built-in probe Files: all file I/O operations are now presented in a single table "File I/O"; new column "Class" was added to easily help identifying file input streams, file output streams and random access files

New in YourKit Java Profiler 2013 Build 13074 (Mar 13, 2014)

  • UI: improvement: used and allocated memory values have been reordered in memory usage graph header and "Summary" tab, placing used before allocated. The new order is more natural since used < allocated < limit.
  • Probes: UI: Event by Table: bug fixed: "# at " column value did not start shown master row indices from 0 for once cleared tables, but presented internal absolute row indices instead
  • UI: optimization: CPU tab opens faster in snapshot mode under certain circumstances
  • UI: bug fixed: possible NullPointerException in sun.java2d
  • IBM Java 7 Release 1 supported

New in YourKit Java Profiler 2014 Build 14000 EAP (Feb 19, 2014)

  • CPU profiling: UI: improved presentation of methods with time less than 1 millisecond.
  • Background: the profiler stores measured times with nanosecond precision (however, note that actual accuracy depends on platform and CPU profiling settings), but UI presents them as milliseconds in call tree, method list and other views.
  • In previous versions, any methods with time greater than 0 but less than 1 millisecond were not shown at all, unless the property -Dyjp.show.shortest.methods=true was specified. In that case their time was presented as 0.
  • Now such methods are always (i.e. the property is no longer effective and is ignored if specified) shown with time having one digit after the period, e.g. "0.7" or "< 0.1". The latter means that the time is greater than 0 but less than 0.1 millisecond.
  • CPU profiling: scalability improvement: UI works much faster when presenting profiling results for a big number (hundreds or even thousands) of threads
  • CPU profiling: CPU tracing in attach mode: bug fixed: some method invocations might have been lost under certain circumstances in case of exceptions thrown in classes from java.lang and some other packages
  • Memory profiling: dominator tree computing has been significantly improved. As the result, big memory snapshots open faster and require less memory to open.
  • Memory profiling: UI: Object explorer: class-specific object presentation: enum value names are immediately shown
  • Memory profiling: UI: Garbage Collection -> (Statistics) Class list -> Object ages: bug fixed: existing object statistics does not respect selection in the upper table
  • IDE integration: improvement: 32-bit vs 64-bit JVM choice is remembered between IDE integration wizard runs
  • IDE integration: bug fixed: "Open Declaration in IDE Editor" action might not navigate to a method having a variadic parameter
  • UI: improvement: connect to profiled applications and opening snapshots is now faster thanks to lazy construction of some heavy components
  • UI: bug fixed: excluded by adaptive CPU tracing method marks were shown in non-CPU profiling views too
  • Agent: FreeBSD: attach mode supported
  • This change simplifies and improves event presentation in time-line views (new ones to come in upcoming builds), event correlation/intersection, allows to measure open and close durations by themselves, as well as gives the following new time metrics:
  • event own time, which is the duration of a lasting event by itself (example: the duration of a resource-opening operation)
  • event aggregate time, which is its own time summed with own times of all dependent events, recursively (example: total time of all operations with the resource: open, read, write, close)
  • event life time, which is the time span between event start time and one of the following points, whichever comes last: event end time, or latest end time of dependent events, recursively (example: for how long the resource was in use, from open to close)
  • Probes: if a lasting event ends on exception, the exception detail can be stored and presented in the UI.
  • Probe API: this new functionality is implemented with a new method com.yourkit.probes.Table.closeRow(int row, @Nullable Throwable exception). Calling Table.closeRow(row) is the same as Table.closeRow(row, null).
  • Probes: API: new callback onExit can be used instead of two separate callbacks onReturn and onUncaughtException. It helps avoiding code duplication in when a lasting event created in onEnter should be closed on normal return as well as on exception. See source code of built-in probes as its usage example.
  • Probes: API: caveat: a number of com.yourkit.probes.Table methods and constants were removed:
  • setFrequentSamplingThreshold() removed; use the startup option telemetryperiod instead
  • isRowClosed() removed as redundant and non-complying with the synchronization-related optimizations described above. Instead, rows remaining opened should be explicitly stored in a container like HashSet. See the source code of the built-in probe Processes for example.
  • MASK_FOR_GENERIC_LASTING_EVENTS and MASK_FOR_SINGLE_METHOD_CALL_LASTING_EVENTS removed - see the notes about the probe model change above; use the new constant MASK_FOR_LASTING_EVENTS instead
  • Probes: reworked and simplified event model. Each single event now corresponding to only one method call. Resources such as files or sockets which can be created, used and eventually closed in different methods and event threads are now handled as such:
  • resource opening event is stored in a master table
  • resource operations (e.g. reads, writes) are stored in dependent tables
  • resource close event is also stored in a dependent table "Close"
  • Agent: new synchronization mechanism significantly reduces overhead when profiling multithreaded applications. In particular, this improvement affects:
  • CPU tracing
  • probes
  • object allocation recording
  • monitor profiling
  • exception telemetry

New in YourKit Java Profiler 2013 Build 13072 (Jan 31, 2014)

  • UI: bug fixed: sporadic "java.lang.ClassCastException"
  • UI: deadlock detector: bug fixed: possible "deadlock detector problem: status mismatch" exceptions for some inputs
  • Agent: bug fixed: IBM Java: "java.lang.UnsatisfiedLinkError" for native methods in com.ibm.oti.vm.VM

New in YourKit Java Profiler 2013 Build 13070 (Jan 24, 2014)

  • Agent: Linux: bug fixed: incorrect session name was chosen in case of very long command line, e.g. 'java' instead of the main class or JAR name
  • Agent: bug fixed: startup options probe_on, probe_off, probe_auto, probe_disable didn't accept the short syntax for built-in probes, e.g. .Databases for com.yourkit.probes.builtin.Databases
  • Agent: probes, performance counters: bug fixed: FileOutputStream and process I/O events were not recorded in some Java versions
  • IDE integration: NetBeans 8.0 Beta supported
  • IDE integration: Mac OS X: bug fixed: the profiler UI wouldn't automatically connect to the profiled process due to Java 7's JavaAppLauncher's inability to pass its command line parameters to java executable

New in YourKit Java Profiler 2013 Build 13046 (Oct 25, 2013)

  • CPU Profiling:
  • Snapshot comparison: improvement: slave views "Back traces", "Callees list" and "Merged Callees" have been added for a method selected in the "Method list". They are especially useful when analysing a method called from different places in the snapshots being compared. 

  • J2EE high-level profiling is now based on built-in probe results. 
This eliminates overhead of previously used dedicated callbacks, which partially repeated the built-in probe functionality, as well as performed some operations in runtime instead of performing them when the profiler opens a snapshot. 
The property high_level_cpu_profiling no longer exists in CPU sampling or tracing settings. The startup option disablej2ee has been removed. To turn J2EE high-level profiling off, you should turn off or disable corresponding probes.
  • CPU tracing: a new startup option _instrument_all_methods has been added to instrument primitive getters, setters and other similar short methods which only access object fields and/or return a value. By default, such methods are not instrumented to reduce overhead. Use this option when invocation counts for all called methods are more valuable than the time accuracy and lower overhead.
  • UI: added ability to show methods that took less than 1 ms by specifying -Dyjp.show.shortest.methods=true in /bin/yjp.ini
  • Optimization: Hot Spots view opens much faster
  • UI: added ability to disable the zero-time method correction with the help of the property -Dyjp.zero.time.methods=false in /bin/yjp.ini.
  • Memory Profiling:
  • Object explorer: values are immediately shown for objects
  • Object explorer: self referencing objects are explicitly indicated with [Self reference], and corresponding tree nodes are leafs now to avoid infinite expansion
  • Object explorer: added ability to customize the maximum number of shown individual objects with the help of the property -Dyjp.max.objects.to.show=number in /bin/yjp.ini. The default value remains 500. Note: setting bigger values increases memory usage and can slow down the UI.
  • Primitive arrays with all the same elements are explicitly indicated in object explorer, paths and other views presenting individual objects
  • Analysis of arrays with a big number of elements has been simplified with the help of the new action "Memory | View Array Elements (Shift+F5)" (also accessible via a popup menu) which opens all elements of selected reference array(s) in a new tab, where they can be comprehensively examined with all available views. 
This action is also available as the "Open all elements in a new tab" hyperlink in the object explorer in addition to the "Configure shown array element range..." hyperlink available for the arrays with hidden elements.
  • Merged paths: improvement: separate nodes are used for GC roots and objects retained from multiple objects
  • Merged paths: improvement: "

New in YourKit Java Profiler 2013 Build 13008 EAP (Jun 10, 2013)

  • Probes: improved ability to dynamically activate and deactivate probes in runtime. The change simplifies configuration, because now you don't have to decide which probes to enable on startup, but make the decision later on demand. This also helps to reduce the overhead of the probes when they are not needed.
  • Register a user-defined probe class com.foo.Bar, whose initial state is Auto. The built-in probes will be in their default state.
  • Memory profiling: merged paths: improvement: separate nodes are used for GC roots and objects retained from multiple objects
  • CPU profiling: UI: optimization: Hot Spots view opens much faster
  • IDE integration: Eclipse: bug fixed: the plugin might not install

New in YourKit Java Profiler 2013 Build 13004 EAP (May 21, 2013)

  • New feature: performance charts. 

  • The performance charts graphically present high level statistics for EE and SE applications, such as:
  • JSP/Servlet requests:
  • count, per second
  • request duration (average, max)
  • Database connections:
  • how many opened and closed, per second
  • live time (average, max)
  • Database queries:
  • count, per second
  • call duration (average, max)
  • Sockets:
  • how many connections opened with accept() or connect() and how many closed, per second
  • for how long connections stayed open (average, max)
  • bytes read from sockets, per second
  • bytes written to sockets, per second
  • File I/O (includes FileInputStream, FileOutputStream, RandomAccessFile):
  • how many files opened and closed, per second
  • for how long files stayed open (average, max)
  • bytes read from files, per second
  • bytes written to files, per second
  • Memory profiling: UI: object explorer: values are immediately shown for objects of the following classes:
  • primitive value wrappers:
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Short
  • java.lang.Boolean
  • java.lang.Byte
  • java.lang.Character
  • java.lang.Double
  • java.lang.Float
  • java.util.Date
  • java.net.URL
  • java.io.File
  • java.util.zip.ZipFile
  • java.util.jar.JarFile
  • atomics:
  • java.util.concurrent.atomic.AtomicInteger
  • java.util.concurrent.atomic.AtomicLong
  • java.util.concurrent.atomic.AtomicBoolean
  • Memory profiling: UI: object explorer: self referencing objects are explicitly indicated with [Self reference], and corresponding tree nodes are leafs now to avoid infinite expansion
  • Memory profiling: UI: object explorer: added ability to customize the maximum number of shown individual objects with the help of the property -Dyjp.max.objects.to.show=number in /bin/yjp.ini. The default value remains 500. Note: setting bigger values increases memory usage and can slow down the UI.
  • Memory profiling: bug fixed: some HPROF snapshots with huge arrays (> 2 GB shallow size each) were reported invalid and would not open
  • Memory usage telemetry: the view layout has been improved to give the graphs more space
  • Probes: UI: columns with event specific data, such as file name or SQL statement, are placed before other columns to avoid horizontal scrolling
  • CPU profiling: added ability to disable the zero-time method correction with the help of the property -Dyjp.zero.time.methods=false in /bin/yjp.ini. The zero-time correction means that any calls to the following methods are ignored: java.lang.Object : wait(*)
  • java.lang.Thread : sleep(*)
  • java.lang.Thread : yield(*)
  • java.net.PlainSocketImpl : socketAccept(*)
  • java.net.PlainSocketImpl : accept(*)
  • org.apache.tomcat.jni.Socket : accept(*)
  • sun.nio.ch.ServerSocketChannelImpl : accept0(*)
  • sun.misc.Unsafe : park(*)
  • java.util.concurrent.locks.LockSupport : park*(*)
  • com.ibm.tools.attach.javaSE.IPC : waitSemaphore(*)
  • sun.nio.ch.EPollArrayWrapper : epollWait(*)
  • 
Technically, their time is subtracted from the caller time up to the call tree root when CPU profiling results are loaded in UI. In other words, their time is always assumed to be 0 when the correction is applied.
  • Probes: problem solved: built-in probes might not work with some security manager settings
  • Probes: performance of built-in probes has been slightly improved
  • UI: Threads view: added ability to change the default thread show mode from "All Threads" to "Live Threads Only" by specifying -Dthreads.default.live_only=true in /bin/yjp.ini.
  • UI: Threads view: added ability to choose "Show selected thread only" by default by specifying -Dthreads.default.selected_only=true in /bin/yjp.ini.
  • UI: Threads view: added ability to change the default stack trace presentation mode from "Filtered stacks" to "Full stacks" by specifying -Dthreads.default.full_stacks=true in /bin/yjp.ini.
  • UI: list of locally running applications: attached agents and agents loaded on start are explicitly indicated as "Agent attached" and "Agent loaded on start" respectively
  • IDE integration: Eclipse: added missing "Profile As" popup menu items for Google plugin and Maven
  • IDE integration: NetBeans: added support of Enterprise Application Client projects

New in YourKit Java Profiler 12.0.1 (Dec 13, 2012)

  • Memory profiling: "Ages" view: bug fixed: an internal error might happen
  • Probes: bug fixed: assertion might fail at JavaObjectMap.cpp:108 due to a race condition
  • Probes: bug fixed: an internal error might happen when clearing tables
  • License management: bug fixes and minor improvements

New in YourKit Java Profiler 9.5 (Nov 17, 2010)

  • New Feature: Attach Mode:New feature: agent attach mode, i.e. an ability to profile Java applications started without the profiler agent.
  • Previously, to profile a Java application it was required to start it with the profiler agent using IDE integration, J2EE integration or manually specifying appropriate JVM option -agentpath/-agentlib.
  • Now it is possible to profile Java applications started without that option, attaching the profiler agent to a running JVM instance on demand.
  • The agent can be attached to a locally running application from the Welcome screen...
  • ...as well as to a remote application with the help of remote attach wizard
  • This approach simplifies profiling, making it even more "on-demand profiling" than ever. It allows to avoid special step to enable profiling: any running Java application can be profiled.
  • Unfortunately, the attach mode is not an ultimate solution: the existing JVMs provide only limited set of profiling capabilities for the attached agents. To get all profiling capabilities, you still have to start the profiled application with the profiler agent instead.
  • Memory Profiling:
  • Improvement: behavior on memory snapshot loading has changed: weak, soft and finalizer queue references are not nulled by default. All live objects, even those accessible by only weak, soft or final queue references, are treated as live.
  • Now you can choose objects of which reachability scope to analyse after opening the snapshot in UI (see below for detail).
  • Why has the behavior been changed?
  • Previous default behavior - to treat all non-strong references as nulls - was introduced in the very first version of YourKit Java Profiler, and its intention was to simplify memory leak detection and help you focus on the real, "strong referenced" problems.
  • However, there were many users confused by "missing" objects, and "mismatch" in sizes shown in memory usage telemetry graph and memory snapshots views.
  • Also, to analyse size of data structures such as soft/weak maps, it was required to explicitly instruct the profiler to keep weak/soft references, via properties -Dyjp.keep.weak.refs=true and/or -Dyjp.keep.soft.refs=true in yjp.ini. Changing the settings required to re-load the snapshot and rebuild its index file.
  • We believe that the new behavior addresses all the issues: o all live objects are visible "out-of-the-box" when opening a memory snapshot o when detecting a memory leak, only strong-reference paths are shown by default o analysis of soft/weak map sizes and similar data structures is available "out-of-the-box"
  • New feature: Paths to GC roots view has an option (active by default) to ignore paths through weak, soft and finalizer queue references:
  • New feature: objects view has new section Reachability scopes which distributes objects depending on how/whether they are reachable from GC roots: o Strong reachable: objects reachable from GC roots via at least one strong reference, or being GC roots themselves. Such objects will not be garbage collected until all strong references to them are nulled and/or they remain GC roots. Thus, memory leaks should be searched among them. o Weak/soft reachable: objects reachable from GC roots via weak and/or soft references only. Such objects can be deleted by garbage collector when it decides to free some memory. Such objects are not memory leaks, but they may deserve attention when you analyse memory consumption. o Dead objects: unreachable from GC roots, but not yet collected. Once garbage collector decides to delete them, they will be deleted. Objects of classes overriding Object.finalize() will be placed to the finalizer queue before actual deletion. o Objects pending finalization: objects in the finalizer queue.
  • In addition to the "Reachability scopes", objects view's header shows brief summary on the number of strong reachable objects, and if there are any, provides an easy way to open them in new tab in one click (useful when analysing memory leaks):
  • Action "Memory | Instances by Class... (Ctrl+N)" allows to choose reachability scope of objects to open:
  • The reachability scope for individual objects is shown in reference explorers and paths views:
  • Snapshot comparison allows to choose reachability scope of objects to be included to the comparison results:
  • New feature: new metrics "Distance to nearest GC root" is shown in Quick info for individual objects
  • New feature: new memory inspection Objects with biggest distance to nearest GC root helps finding longest chains of objects such as linked lists, queues, trees etc.
  • New feature: new memory inspection HashMap hash code distribution helps finding maps with bad performance due to hash collisions
  • New feature: new memory inspection Duplicate Arrays finds potential memory waste
  • New feature: added ability to capture HPROF format snapshots of applications running on JRockit R28.0.0 and newer.
  • New feature: HPROF snapshots: thread stacks at the moment of snapshot capture are shown in "Threads" tab (if available). Also, for each thread are shown its name, status and tid, as well as daemon threads are indicated. Note: if there are index files created via earlier builds of the profiler, please delete or re-create them; otherwise stacks will not be shown.
  • Improvement: object size calculation is supported for HPROF snapshots of JVMs running in the compressed pointer mode (JVM option -XX:+UseCompressedOops).
  • In this mode, JVM runs as a 64-bit process, but object references stored in heap are 32-bit instead of full 64-bit, which saves memory and helps CPU cache in its work.
  • HPROF files do not explicitly contain object size information, so the profiler calculates them basing on object field types and array sizes. In case of a 64-bit snapshot, it has to know whether -XX:+UseCompressedOops was used, to detect object reference size - 4 bytes or 8 bytes. Unfortunately, this information cannot be automatically retrieved from the HPROF file.
  • When a 64-bit HPROF snapshot is about to open, you will be asked to choose what kind of snapshot it is.
  • When opening snapshots via API or when performing offline snapshot indexing, please use -Dyjp.hprof.compressed.oops=true or -Dyjp.hprof.compressed.oops=false (default).
  • Improvement: more accurate size calculation for some arrays in HPROF snapshots
  • Improvement: first elements of primitive arrays are immediately shown in object explorers
  • Improvement: default number of array elements shown in object explorer (10) can be changed adding -Dyjp.array.elements.to.show=value in /bin/yjp.ini However, note that showing too many elements can make the UI slower when browsing big arrays.
  • Improvement: if Class hierarchy is shown for a single object which is a class itself (java.lang.Class), the hierarchy is presented for corresponding class, but not for class java.lang.Class.
  • New feature: action "Memory | Class Itself (java.lang.Class) by Name..." (Ctrl+Shift+C). The new action is similar to "Memory | Instances by Class...", but it opens the class object itself (java.lang.Class) for specified class instead of its instances. This new action can be used to explore class static fields, as well as class loader and super class hierarchy, especially for classes without instances.
  • Improvement: Garbage collection view: in addition to the collected object count and size columns, count and size of existing object columns are shown. Also, context actions such as "Memory | View Selected Objects... (F4)" are available, so you not only can get the numbers, but also browse the existing objects themselves. Note: statistics is shown for all objects in the snapshot; if you need allocation statistics for particular subset of objects, open corresponding objects view and use its "Allocations" section.
  • Improvement: objects view: UI cleanup: allocation views are not cluttered with GCed object statistics anymore, as they are aimed to analyse where particular existing objects were created. To analyse where excessive garbage was produced, use dedicated view Garbage collection instead.
  • Improvement: objects view: slave view "Callees List" shown for allocations has new columns "Own Count" and "Own Size".
  • Improvement: objects view: slave views "Callees List", "Merged Callees" and "Back Traces" shown for allocations display information about objects which correspond to current selection in master view, but not objects of entire snapshot.
  • Improvement: Quick info shows retained object count as well as retained size
  • Improvement: Quick info shows text presentation for char[] and java.lang.String in scrollable text area. In particular, this allows to inspect long strings.
  • Improvement: Quick info allows to export entire string or primitive array to a file in following formats: o text file in UTF-8 (available for char[] and java.lang.String) o binary file (available for byte[]) o text file with array element values (available for all primitive arrays)
  • Improvement: Quick info text presentation is shown initially positioned at beginning of the text. Also, long lines are wrapped.
  • Bug fixed: "Self referencing objects" inspection could give false alarm for some java.lang.Thread instances
  • CPU Profiling:
  • Improvement: UI cleanup: slave views "Merged Callees" and "Back Traces" are shown for master views "Hot spots" and "Method lists" only, but not for "Call Tree" views, where they were useless. Should you need to quickly get information about all calls of the method selected in call tree, use actions "CPU | (View) Method Merged Callees in New Tab (Ctrl+M)", "CPU | (View) Method Back Traces in New Tab (Ctrl+Shift+M)" and "CPU | (View) Method by Name... (Ctrl+Shift+N)".
  • Telemetry:
  • New feature: Threads view optionally shows all threads, only live threads or only finished threads.
  • Improvement: Threads view: calls from java.util.concurrent which block caller thread are now shown as "BLOCKED" instead of "WAITING" as JVM reports
  • Improvement: Threads view: Copy to clipboard action allows to copy strings containing character with code 0 (C-style string terminator). Previously, such strings were truncated.
  • Bug fixed: Threads view: scroller position might get lost on resize
  • Bug fixed: Threads view: "Stack Traces" tab might not update properly with "Show stack of selected thread only" selected
  • Probes:
  • New feature: new built-in probe com.yourkit.probes.builtin.Processes monitors processes launched via Runtime.exec() and ProcessBuilder.start().
  • Improvement: mapping between monitored objects and corresponding event row indices no longer involves creation of temporary Integer objects. This reduces garbage collector load, as well as eliminates possible problem with internal map memory usage.
  • Note on probes API: class com.yourkit.probes.ObjectIntWeakMap which implemented the old mapping approach has been deprecated. Instead, use com.yourkit.probes.ObjectRowIndexMap.
  • Improvement: improved performance of built-in probe com.yourkit.probes.builtin.Databases
  • Improvement: new startup option noprobe= allows not to register particular built-in probe on startup
  • Improvement: startup options 'probeclasspath' and 'probebootclasspath' allow specification of several elements, separated with system-specific path separator (';' on Windows, ':' on non Windows)
  • Improvement: it is now possible to use callback method parameter annotation @This declared as a reference type other than java.lang.Object in probes applied to constructors. However, note that the probe must not have onEnter callback; only onReturn, onUncaughtException or onUncaughtExceptionExt are allowed. If you need to apply onEnter to a constructor, declare parameter @This as java.lang.Object in all the probe callbacks.
  • IDE Integration:
  • New feature: Eclipse: Maven run configuration type supported
  • New feature: NetBeans: Maven projects supported
  • New feature: IntelliJ IDEA X (EAP) supported
  • Improvement: Eclipse: new simplified plugin UI
  • Improvement: Eclipse: the profiler plugin update site archive is bundled as /lib/eclipse-plugin/yourkit95_for_eclipse.zip. Use it instead of the online site http://www.yourkit.com/download/yourkit95_for_eclipse/ if installing the plugin with limited internet access.
  • Caveat: Eclipse: integration is supported for Eclipse 3.4 and newer only. Eclipse 3.3 is no longer supported.
  • User Interface:
  • Improvement: to save vertical space for other components, the help bar height was reduced. Also, there is an option to hide the help bar ("Settings | Show Help Bar") and/or the status bar ("Settings | Show Status Bar")
  • Improvement: "Thread name" filter in "Threads" tab (and similar filters in other views) now optionally accepts full regular expression syntax
  • Improvement: before starting opening a memory snapshot, the profiler checks whether available disk space is enough to create temporary files needed to open the snapshot. If the available space is not enough, a warning is shown, as well as instructions on how to specify alternate temporary directory (e.g. on another disk).
  • Bug fixed: Mac OS X: hyperlinks in selected rows had text color almost indistinctive from the background
  • Miscellaneous:
  • Improvement: Automatic deadlock detector is now able to find cycles of threads that are in deadlock waiting to acquire not only object monitors, but also ownable synchronizers (java.util.concurrent.locks.*)
  • Improvement: Command line tool to control profiling: added commands clear-cpu-data, clear-alloc-data, clear-monitor-data
  • Improvement: Solaris: profiler UI startup script yjp.sh automatically uses JDK 6 in Solaris standard location; this means that on most machines it will run out of the box
  • Improvement: Help is not only available online, but also as a ZIP archive for offline browsing (see Docs & Demos)

New in YourKit Java Profiler 8.0.20 (Jan 19, 2010)

  • IDE integration: NetBeans 6.8 (release) supported
  • J2EE integration: GlassFish 3 supported
  • Memory profiling: improved diagnostics on attempt to open incomplete snapshot

New in YourKit Java Profiler 8.0.19 (Nov 23, 2009)

  • IDE integration: NetBeans 6.8 supported
  • Memory profiling: extended range of partially-incorrect HPROF snapshots produced by old JVMs which can be successfully opened
  • Mac OS X: problem solved: on low memory snapshots could be captured in inappropriate situations
  • UI: Threads view: improvement: thread state colors are now configurable. Use legend's popup menu to configure the color.
  • JRockit: improved handling of incorrect data provided by JRockit JVM under some rare circumstances, which could lead to crashes on memory snapshot capture and/or to invalid memory snapshots

New in YourKit Java Profiler 8.0.7 (May 18, 2009)

  • Memory profiling: extended range of partially-incorrect HPROF snapshots (e.g. produced by pre-Java 6 VMs) which can be successfully opened and analyzed.
  • Bug fixes in snapshot comparison.
  • Bug fixed: "Show stack of selected thread only" option did not work under certain circumstances.
  • Minor bug fixes.

New in YourKit Java Profiler 8.0.6 (May 18, 2009)

  • New feature: "Threads" view: option to show stack of selected thread only.
  • IDE integration: NetBeans 6.5 integration improvements.
  • Solved desktop integration issues on KDE.
  • Minor bug fixes.

New in YourKit Java Profiler 8.0.5 (May 18, 2009)

  • IDE integration: MyEclipse "Server" and "Server Application" run configurations supported.
  • Problem fixed: possible VerifyError using xalan.

New in YourKit Java Profiler 8.0.4 (May 18, 2009)

  • Bug fixed: memory snapshots with recorded object allocations might fail loading.

New in YourKit Java Profiler 8.0.3 (May 18, 2009)

  • Bug fixed: problems using inclusive filters.
  • HPROF snapshots: thread and stack is shown for GC roots of types "Stack Local" and "JNI Local". This information will be available in HPROF snapshots captured with Java 6 update 14, according to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6306922. Tested with EA build of update 14.
  • Exception telemetry: bug fixed: snapshots with many recorded exceptions might load slowly.
  • NetBeans 6.5 integration: improvements.
  • J2EE integration: Resin server integration improved.

New in YourKit Java Profiler 8.0.2 (Mar 3, 2009)

  • NetBeans 6.5 integration: improved support of JBoss
  • New G1 garbage collector available in Java 6 update 14 (Early Access) is now supported
  • Bug fixed: console version of the J2EE integration wizard did not run on Java 5 but only on Java 6
  • Installation improvements on Windows Vista
  • IDE integration: solved issues with navigation feature

New in YourKit Java Profiler 8.0 (Feb 17, 2009)

  • Memory profiling:
  • Snapshot index file accelerates snapshot opening, which makes the subsequent snapshot loadings much faster, as well as allows opening big snapshots on 32-bit workstations by using index file pre-created on powerful 64-bit machine.
  • Class loaders view shows objects grouped by class loader; this view can help solving issues such as leaked loaders.
  • In Class list, retained size estimation for each class is shown immediately on opening the view.
  • Allocation telemetry: ability to profile object allocation without capturing a memory snapshot.
  • Non-serializable objects referenced from serializable objects inspection.
  • Option to transfer memory snapshot of remote application via compressed data stream.
  • Special handling of byte[] and char[] in UI.
  • CPU profiling:
  • Callees list.
  • "Own time" column in call tree.
  • "Average time" column in call tree.
  • Telemetry:
  • Exception telemetry.
  • Thread state telemetry.
  • Telemetry graphs are now scalable.
  • Ability to change the telemetry buffer capacity.
  • J2EE:
  • "Generic server" option helps integrating with servers not explicitly supported by J2EE server integration wizard.
  • J2EE server integration resolves many problematic cases of e.g. edited/modified scripts which prevented successful integration in previous versions.
  • IDE intregration:
  • NetBeans 6.5 supported.
  • JDeveloper 11g supported.
  • User interface:
  • Table column visibility is now configurable.
  • Overall usability improvements.
  • Licensing:
  • The profiler agent and controller are are freely redistributable under BSD license.
  • Miscellaneous:
  • FreeBSD supported.
  • Command line tool to control profiling without using the profiler UI; in some cases it can be used instead of the profiler API.
  • Automatic deobfuscation: yGuard and ProGuard supported; RetroGuard support improved.
  • Overall stability and performance improvements.

New in YourKit Java Profiler 8.0 EAP Build 4058 (Feb 10, 2009)

  • CPU profiling: own time column in call tree.
  • CPU profiling: average time column in call tree (available in CPU tracing snapshots).

New in YourKit Java Profiler 8.0 EAP Build 4052 (Feb 4, 2009)

  • Optimization: faster snapshot loading
  • Minor fixes and UI improvements

New in YourKit Java Profiler 8.0 EAP Build 4048 (Jan 26, 2009)

  • Memory profiling: ability to save snapshot index file to accelerate further snapshot opening.
  • Optimization: 32-bit version of the profiler opens memory snapshots faster.
  • Bug fixes.

New in YourKit Java Profiler 8.0 EAP Build 4046 (Jan 16, 2009)

  • Optimizations and minor bug fixes

New in YourKit Java Profiler 8.0 EAP Build 4042 (Jan 8, 2009)

  • Table column visibility is now configurable.

New in YourKit Java Profiler 7.5.11 (Jan 8, 2009)

  • J2EE integration: bug fixed: agent startup options (see changes in 7.5.9) were incorrectly passed in case of WebSphere and Sun Application Server.
  • J2EE integration: Mac OS X: space characters removed from the default installation directory name to prevent J2EE integration wizard issues related with incorrect handling of paths with spaces in some server startup scripts.
  • Minor UI bug fixes.

New in YourKit Java Profiler 8.0 EAP Build 4036 (Dec 23, 2008)

  • Multiple improvements in thread telemetry UI
  • "Class loaders" view improvements:
  • for each loader, the number of loaded classes is shown, as well as the number of classes without instance among them; this information can help finding leaked loaders
  • paths from GC roots to the loader object are now explicitly available as a slave view; this allows to learn why particular loader is retained in memory
  • "File | Compare Snapshot with..." now compares exception telemetry as well

New in YourKit Java Profiler 8.0 EAP Build 4034 (Dec 16, 2008)

  • Telemetry graphs are now scalable. Choose desired time resolution with the help of a toolbar button (the rightmost) or invoke a popup menu on the graph.
  • "Callees list" view. Read more...
  • J2EE integration wizard: "Generic server" option helps integrating with servers not explicitly supported by the wizard

New in YourKit Java Profiler 8.0 EAP Build 4030 (Dec 4, 2008)

  • Non-serializable objects inspection (see changes in 4026): bug fixed: improper handling of serializables which use standard collection classes: ArrayList, LinkedList, HashSet, HashMap, Vector, Hashtable. For instance, this fix enables proper analysis of Tomcat's HTTPSessions.
  • Minor fixes.

New in YourKit Java Profiler 8.0 EAP Build 4020 (Nov 11, 2008)

  • Memory profiling: new view "Class loaders" shows objects grouped by class loader
  • Thread status telemetry: graph is automatically scrolled when mouse is gragged to left/right side
  • Minor UI fixes

New in YourKit Java Profiler 7.5.10 (Nov 6, 2008)

  • CPU profiling: bug fixed: incorrect wall times under certain circumstances

New in YourKit Java Profiler 8.0 EAP Build 4008 (Oct 22, 2008)

  • Memory profiling: HPROF snapshots: available properties (such as Java version, class path etc.) are shown in the Summary tab
  • Summary tab: improved visualization of paths and parameters by showing components split by lines
  • Memory profiling: bug fixed: text values of java.lang.String might be incorrectly shown
  • Welcome panel: tooltip in recent snapshot list shows snapshot full file path, size and modification date

New in YourKit Java Profiler 7.5.8 (Oct 22, 2008)

  • Memory profiling: bug fixed: text values of java.lang.String might be incorrectly shown
  • Minor UI bug fixes
  • Windows installer is bundled with Java 6 update 10 JRE. Among a number of improvements, this Java update solves annoying problem of open file dialog which was very slow entering a directory containing ZIP files.

New in YourKit Java Profiler 8.0 EAP Build 4002 (Oct 11, 2008)

  • Bug fixes.

New in YourKit Java Profiler 7.5.7 (Oct 1, 2008)

  • Memory profiling: problem fixed: possible crash rendering huge strings
  • Memory profiling: optimization: views with huge strings are rendered faster
  • Solved problems with Eclipse 3.4 integration
  • Windows 64-bit: to achieve better performance and user experience, the profiler UI will automatically launch on a 64-bit JRE

New in YourKit Java Profiler 7.5.6 (Jul 30, 2008)

  • IBM Java 6 supported
  • Minor UI bug fixes