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

Changes in Version 2020.9

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.

Changes in Version 2020.7

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<user home>/.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 <user home>/.yjp/ui.ini allows for partial loading of a memory snapshot by loading only first N objects and skipping the rest.

    Although this approach gives incomplete picture, it may be practically useful when full snapshot loading cannot be done on particular machine due to lack of memory and/or if it takes too much time.

    By default, the limit is 2,147,483,632 (~2 billion).

  • feature Important snapshot loading warnings are now shown to the user after opening a memory snapshot.
  • feature Object allocation recording with the help of the heap sampling JVMTI event is now supported on all platforms. In previous versions it was unavailable on Linux PPC and AIX.

    Heap sampling is a Java profiling capability introduced in Java 11 via JEP 331 which makes it possible to record allocated objects without using bytecode instrumentation.

  • feature Memory inspection Leaked OSGi bundle class loaders finds OSGi bundle class loaders not associated with any current bundle revision.

    Such loaders, along with all classes they loaded, are likely memory leaks. They can appear if after unloading a bundle external references to its objects are left.

    The inspection is available for OSGi implementations Apache Felix and Eclipse Equinox.

  • feature Object explorer provides special presentation for objects specific for OSGi frameworks. It shows in-lined most important properties:

    • org.osgi.framework.Version - version as string
    • OSGi bundle (org.apache.felix.framework.cache.BundleImpl, org.eclipse.osgi.internal.framework.EquinoxBundle) - symbolic name, version, .jar file path
    • Bundle class loader (org.apache.felix.framework.BundleWiringImpl$BundleClassLoader, org.eclipse.osgi.internal.loader.EquinoxClassLoader) - symbolic name, version, .jar file path of the bundle to which the loader is related. A memory leak warning is also shown if the loader is not associated with any current bundle revision.
    • org.apache.felix.framework.cache.BundleArchive - .jar file path
  • feature Object explorer directly shows associated objects as pseudo-fields:

    • for an OSGi bundle (org.apache.felix.framework.cache.BundleImpl, org.eclipse.osgi.internal.framework.EquinoxBundle), the bundle class loader (org.apache.felix.framework.BundleWiringImpl$BundleClassLoader, org.eclipse.osgi.internal.loader.EquinoxClassLoader) is shown as the pseudo-field <OSGi bundle loader>.
    • and vice versa, for a bundle class loader its OSGi bundle is shown as the pseudo-field <OSGi bundle>.
  • feature API: added new static method long com.yourkit.probes.JVM.getPersistentObjectId(Object) to explicitly obtain the persistent ID of an object. The intention is to help identify particular objects of interest in a memory snapshot. Classpath requirements for using this API are explained here.
  • feature Classes view previously located inside Memory & GC Telemetry was moved to a new dedicated page Classes inside the Memory tab. As before, Classes view is shown only in live mode and in a performance snapshot. It is superseded with more specialized views in a memory snapshot.

  • feature New graph layout in Memory tab. Graphs are now arranged in 3 rows of 2 graphs each.
  • feature Find | Strings by pattern... (Ctrl+F) action can be cancelled, which may be helpful when working with huge snapshots.
  • improvement The node indicating incomplete list and more... in Object explorer is now always placed last, disregarding the column sort direction.
  • improvement Expansion of the node <Retained from several objects simultaneously (don't have a dominator)> in Merged paths is faster.
  • improvement Threads view for a HPROF snapshot captured on an java.lang.OutOfMemoryError opens with the exception thread preselected.
  • improvement Snapshot loading time and memory footprint reduced by not pre-calculating depth to GC roots for all objects, which used to be significant for huge snapshots. Instead, the inspection "Objects with biggest distance to nearest GC root" calculates the depths on demand. The inspection now also allows to set the depth limit to speed up analysis of huge snapshot.
  • improvement HPROF loading on non-Windows platforms is improved. Profiler detects the situation when a HPROF file being loaded is externally overwritten at the same time. The known case is when a full snapshot name is specified with -XX:HeapDumpPath instead of target directory e.g. -XX:HeapDumpPath=/foo/bar.hprof, and the JVM makes a new dump to the same file while the profiler has started loading the old one.
  • fix Action Memory | Instances by Class... (Ctrl+N) being invoked in a class name context, might preselect improper class in the list.
  • fix Object explorer: sorting by "Name" column did not respect class loader indices.
  • fix Paths: action Expand Node Fully might cause stack overflow on a very long path.
  • caveat Memory snapshot API class com.yourkit.api.MemorySnapshot can be used on Java 11 or newer. Snapshots of older Java versions can still be analysed by performing the analysis on Java 11+.

IDE integration

  • feature IntelliJ IDEA: added support of Gradle run configurations. This feature requires IDEA 2017.2 or newer.
  • feature IntelliJ IDEA: added support of Maven run configurations. This feature requires IDEA 2017.2 or newer.
  • feature Eclipse 2020-06 (4.16) supported.
  • feature MyEclipse 2020.5 supported.
  • feature NetBeans 12 LTS supported.
  • feature Action Tools | Open in IDE (F7) is improved to navigate to the exact code line when opening a lambda class name.

    This solves a non-trivial task of matching a lambda class name to its source for classes with multiple lambdas. This is especially useful in memory snapshots for lambda object identification or in other situations when the lambda class name is presented without corresponding call tree context.

    Limitation: source code navigation for lambdas will not be possible if the class loading events are not available (HPROF format snapshot) or not recorded (the class loading probe was explicitly disabled). The reason is that JVM does not provide API to match the generated lambda class name to a source code line, and we use our probes as a workaround.

  • fix Action Tools | Open in IDE (F7) no longer blocks the profiler UI in the case when the IDE cannot immediately perform the navigation being busy with other activities such as building its code caches.
  • caveat Minimal supported IntelliJ IDEA version is now 14.1.

EE server support

  • feature EE server integration wizard: GlassFish 5.1 supported.
  • feature EE server integration wizard: JBoss 7.3 supported.
  • feature EE server integration wizard: WebLogic 14c supported.
  • feature EE server integration wizard: WebSphere Liberty 20 supported.
  • feature EE server integration wizard: WildFly 18, 19 and 20 supported.

Triggers

  • fix NullPointerException might happen when adding a trigger on timer.

Events

  • feature Event tables: times can be shown in microseconds instead of milliseconds with the help of the new option -Dyk.event.time=mks specified in <user home>/.yjp/ui.ini.
  • feature Probes updated to support MongoDB Java driver 4.0.
  • feature Probes updated to support Apache Cassandra database Java driver versions 4.0 to 4.7.

Miscellaneous

  • improvement Improved handling of restricted docker containers: if the user home directory does not exist or is not writable, snapshots will be created in /tmp by default.
  • improvement Remote profiling with Advanced application discovery method has been improved. Profiler connects faster and consumes less traffic.
  • improvement Attach to Java 11+ instances streamlined by using the target JVM's own attach classes whenever it has "jdk.attach" module.
  • improvement Other stability improvements in agent.
  • improvement Demo application started from Welcome screen is now launched with monitor profiling started.
  • improvement Windows: the profiler launcher logging can be enabled by creating an empty file <user home>\.yjp\enable_launcher_log.txt, which may be helpful for troubleshooting. The log files profiler-launcher-<PID>.log are created in the profiler log directory <user home>\.yjp\log.
  • fix The profiler was not able to connect to a local docker container with hostname matching the hostname of the local machine.
  • fix Export from command line might produce empty output for charts.
  • fix Possible java.lang.VerifyError when tracing bytecode produced by Android R8 compiler.
  • fix Possible java.lang.VerifyError when applying probes to bytecode generated with CGLIB e.g. under Spring
  • fix IBM Java: short-running profiled processes might crash.
  • caveat Minimal supported Windows versions are now Windows 7 (desktop) and Windows Server 2008 R2 (server). Windows XP, Windows Vista, Windows Server 2003 and Windows Server 2008 are no longer supported. Affected are both the profiler UI and the profiler agent.

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.

  • Java 7 support.
  • Option to set "system" color theme. The motivation is that we want to have consistent and modern UI look on all supported platforms.

YourKit uses cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content and targeted ads, to analyze our website traffic, and to understand where our visitors are coming from.

By browsing our website, you consent to our use of cookies and other tracking technologies in accordance with the Privacy Policy.