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