Fully featured low overhead profiler for Java EE and Java SE platforms.
Monitoring and profiling solution for Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

Changes in version 2017.02

See also: Changes in version 2017.02 builds


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" 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, which makes them compatible with thread IDs as seen in system logs, Task Manager and other similar tools.

CPU profiling

  • Call tree view directly shows web and database 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
  • New feature: higher-level profiling of MongoDB database. MongoDB request information is available in:
    • "High-level statistics" view, "Database" section
    • "Events" tab
    • "Performance charts" tab
  • Action "CPU | View Method By Name..." (Ctrl+Shift+N): currently selected method is now preselected in the chooser popup
  • Own time column in call tree views was removed as redundant. To return it specify -Dyk.own.time.column=true in <user home>/.ynp/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 dictionary entries. Also, the action "Open dictionary keys, values, entries in a new tab" available for dictionary objects now offers to open entries by default.

  • Object explorer: class-specific object presentation: System.Drawing.Color supported: color components (red/green/blue/alpha) as well as the color itself are presented
  • Object explorer: collection size is immediately shown and the action Memory | Contained Objects is available for more classes: classes from System.Collections.Concurrent namespace, read-only and synchronized wrappers, System.Collections.Generic.SortedSet, System.Collections.Generic.SortedDictionary
  • 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.

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

  • Memory inspection "Dictionary hash code distribution" inspection: added support of ConcurrentDictionary and Hashtable
  • If the property -Dyk.tmp.dir=<directory> is specified it is also respected while calculating the dominator tree which is performed when a memory snapshot is being loaded

Telemetry

  • Threads view reworked, now shows events alongside thread states

  • Threads view: "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 (3rd from the right), new profiler API method YourKit.Profiler.Api.ClearCharts().


Event recording with probes

  • "High-level statistics" view: added ability to open the longest event in "Events"

  • New inspection "Queries can be parametrized" finds similar SQL queries that can potentially be optimized by using SQL parameters


Miscellaneous

  • 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 ynpagent.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.
  • Optimization: snapshot loading speed was greatly improved for performance snapshots
  • Other bug fixes