Changes in version 2024.9
- JVM support
- macOS support
- YourKit Connection Broker
- Snapshot compression
- User interface
- Virtual thread support
- CPU profiling
- Thread profiling
- Memory profiling
- IDE integration
- EE server support
- Profiler API
- Miscellaneous
JVM support
- feature Java 23 is supported.
macOS support
- caveat We have raised the minimum supported version requirements for macOS on the x64 architecture. The profiler now requires macOS 10.15 or later.
YourKit Connection Broker
YourKit Connection Broker continues to evolve, and in this release, we are excited to introduce new and interesting features:
-
feature You can select the geographic region to which applications connect. This significantly increases throughput and reduces network latency.
-
feature You can now observe and manage profiling modes of your Java applications directly from the web browser.
-
feature The application's web page now displays telemetry charts for CPU, memory, and garbage collector activity.
-
feature Collaboration is now possible. You can invite collaborators to monitor together the performance of your Java applications.
-
feature The list of monitored applications now includes the column for JVM heap usage.
- caveat If you already have a Connection Broker account, you need to migrate it to cloud.yourkit.com.
Snapshot compression
Data compression algorithms are constantly evolving, and in version 2024.9, we decided to turn the zstd compression algorithm on by default for compressing transferred snapshots.
In previous versions of the profiler, users could specify whether compression was used when transferring a snapshot from a remote machine. However, zstd demonstrated such outstanding compression quality and speed that we decided to remove the compression option from the user interface. Compression is now enabled by default, making the UI simpler and cleaner.
For those who wish to disable compression or revert to the
previous deflate
algorithm,
we have added the profiler agent option
snapshot_download_compression
,
which allows you to specify the desired behavior.
User interface
-
feature Remote snapshots can now be downloaded in the background. There is no longer a modal progress window that blocks the user interface. You can continue working with the profiler while the snapshot file is downloaded from the remote machine. The download progress is displayed in a small, non-modal notification balloon.
-
feature You can customize your workflow when working with snapshots by specifying actions that will be automatically performed after capturing a snapshot or after downloading a snapshot from a remote machine. For example, you can choose to Always download the remote snapshot and Always open it after downloading.
You can also set your preferences in the Settings | On Snapshot Capture menu.
- improvement CPU usage estimation has been greatly optimized. It now works much faster and does not block the user interface while performing the calculation.
-
feature
Profiler can now open snapshot files compressed by
Zstandard (zstd) compression algorithm
(
.zst
and.zstd
file extensions). - fix The issue where pressing ESC did not always close an open window has been fixed.
Virtual thread support
Support for Java virtual threads has greatly improved in version 2024.9. Virtual threads are supported in all profiling modes, including asynchronous CPU sampling, CPU tracing, and object allocation profiling.
-
feature In the call trees, the stacks of all virtual threads are merged together and grouped under the <Virtual threads> node.
-
feature The Telemetry view now includes a new All virtual threads chart, which displays the number of virtual threads in the JVM.
CPU profiling
-
feature When monitoring a running application, the column displaying the number of samples is shown in the call tree views in CPU sampling mode.
-
feature When monitoring a running application, the columns displaying the average call duration and the number of invocation counts are shown in the call tree views in CPU tracing mode.
- improvement We have updated the core of our async profiler. Now, async sampling is more reliable and works consistently with Java 23. This also allowed us to fix most of the issues with async sampling that our users had reported.
- fix Fixed crash when async sampling Linux musl x64.
- fix Fixed "Could not set dlopen hook" error when trying to start async sampling.
- fix Fixed async sampling crash on arm64 macOS Azul JDK.
Thread profiling
-
feature We have redesigned and improved the user interface for the view that displays stack traces for threads.
1. A long-awaited option, Pin stack to the selected thread, has been added. This allows you to display the stack of only the thread selected in the top thread list.
2. All useful actions have been placed in a vertical toolbar. This increases the amount of visible useful information and makes the interface simpler and more intuitive.
- fix In several cases, the profiler displayed the thread state as Runnable when the thread was actually waiting in native code.
Memory profiling
-
feature The Threads view for the HPROF snapshot displays a list of running threads, along with their stacks, states, and retained sizes. The thread where
OutOfMemoryError
occurred is marked with a special icon. -
feature
In the Threads
view for the HPROF snapshot,
you can open each individual
java.lang.Thread
object in the object explorer by pressing F4, or you can view all the objects retained by the thread by pressing the Shift+F4 shortcut.
IDE integration
- feature Eclipse 2024-09 is supported.
- feature MyEclipse 2024.1 is supported.
- feature NetBeans 23 is supported.
- feature Plugin for IntelliJ IDEA can be enabled or disabled without an IDE restart.
- caveat The minimum supported version of Eclipse is now 2020-09.
- caveat The minimum supported version of IntelliJ IDEA is now 2020.3.
- caveat The minimum supported version of NetBeans is now 13.
- caveat The plugin for JDeveloper, which was deprecated in version 2024.3, has been removed.
EE server support
- feature WildFly 33 server is supported.
Profiler API
-
feature
The Profiler API (both the
HTTP API and
Java API)
now allows changing profiling modes without first stopping the profiling.
In the previous version of the profiler, for example,
it was necessary to stop CPU sampling before starting CPU tracing.
Now, you can call
startSampling
and thenstartTracing
without needing an intermediate call tostopCpuProfiling
.
Miscellaneous
-
improvement
New
quiet=true|false
option suppresses or allows printing occasional agent messages to stdout and stderr, such as printing agent log path on application startup. Previously agent printed such messages, the new default suppresses them. - fix Fixed a bug in the Windows version of the profiler agent that caused a thread handle leak when the profiler UI connected to the agent.
- caveat The HTTP API v1 has been removed. Please use HTTP API v2.
-
caveat
The deprecated
com.yourkit.api.controller.Controller
has been removed, please usecom.yourkit.api.controller.v2.Controller
replacement.