JProfiler Portable Changelog

What's new in JProfiler Portable 14.0.2

Mar 12, 2024
  • New features:
  • Full support for Java 22 virtual threads
  • Support for virtual threads in HPROF snapshots
  • Support for OpenJPA 4 in the JPA/Hibernate probe
  • Bugs fixed:
  • Closing a popup for probe event types, control object types and thread liveness types other than with the control buttons in the popup or the keyboard shortcuts did not update the filters
  • For snapshots, adding a probe telemetry in the telemetry section showed a message to record data under some circumstances

New in JProfiler Portable 14.0.1 (Jan 23, 2024)

  • New features:
  • Preliminary support for profiling the current Java 22 builds
  • Support for MongoDB 5.0.0-beta0
  • Bugs fixed:
  • Connecting to a Docker or Kubernetes container could throw an IllegalStateException: duplicate key
  • Fixed sampling of unmounted virtual threads on Openj9 JVMs
  • Fixed a rare deadlock when starting and stopping CPU recording

New in JProfiler Portable 14.0.1 (Jan 23, 2024)

  • New features:
  • •Preliminary support for profiling the current Java 22 builds
  • •Support for MongoDB 5.0.0-beta0
  • Bugs fixed:
  • •Connecting to a Docker or Kubernetes container could throw an IllegalStateException: duplicate key
  • •Fixed sampling of unmounted virtual threads on Openj9 JVMs
  • •Fixed a rare deadlock when starting and stopping CPU recording

New in JProfiler Portable 14.0 (Sep 7, 2023)

  • New features:
  • Full support for virtual threads with a virtual thread async tracking type (new in Java 21)
  • Added a garbage collector probe
  • Added a JFR event browser when opening JFR snapshots
  • Opening very large JFR snapshots is now much faster
  • JFR snapshots also show the GC probe
  • Added support for JFR recording, also on remote machines, local or remote Docker container or on Kubernetes
  • Added a gRPC probe and a gRPC remote request tracking type
  • Near-zero overhead for full sampling when profiling Java 17+
  • Probe events view: The type filter drop-down now allows the selection of multiple types
  • Probe events view: When multiple events are selected, the cumulated call tree, CPU hot spots or probe hot spots are shown below the events table
  • Probe events and control objects views: Scales for duration and throughput columns are now configurable in the view settings dialog.
  • Probe events, control objects, current monitors and monitor history views: Multi-column filters with range editors for numeric values
  • Probe events view: Histograms for event durations and recorded throughputs are shown at the bottom. Events can be filtered by selecting an interval in the histograms.
  • Probe telemetries view: After selecting a time interval with the mouse, the events view will be shown with a corresponding time filter. This also works for probe telemetries that have been added to the VM telemetries.
  • Probe call tree and hot spots view: Added a "Show events" action that will set a corresponding call stack or hot spots filter and show the probe events view
  • The "Show events" action and the "Show in heap walker" actions in the control objects views of probes now support multiple selection of control objects
  • In the telemetry overviews for VM telemetries and probe telemetries, the telemetries can be reordered via drag and drop
  • VM telemetries that are based on recorded objects are now always shown, with actions to start recording and to show the recorded object views
  • Selected probe telemetries can be added to the VM telemetry section with actions to start recording and to show the corresponding probe view
  • Telemetries can be exported as SVG, the PNG export is still optionally available
  • Current monitor data is now a snapshot rather than continuously updated. A corresponding trigger action and controller API method are available.
  • Current monitors and locking graph views now show java.util.concurrent locks
  • Current monitors and locking graph views now group similar threads. This makes it easier to interpret locking situations with many threads and is important for supporting virtual threads.
  • Current monitors and locking graph are now also available in attach mode, for java.util.concurrent locks only
  • Thread history and probe time line views: Threads can be reordered via drag and drop
  • Thread history and probe time line views: Threads can be sorted by start time or alphabetically
  • Flame graphs can be exported as SVG
  • The tooltip in flame graphs is now pinnable, so hovering over the tree can be free of any obstructions from the tool tip
  • Flame graph colorizations are now persisted
  • "Show Source" and "Show Bytecode" context menu actions have been added to the flame graph
  • In the attach dialog reduced the number of "unknown" processes, showing the Java home directory instead
  • Support for attaching to Linux processes that were started by systemd with PrivateTmp=yes
  • Support for attaching to Linux processes with namespaced mounts that make /var/tmp non-writable
  • Support for profiling Java 21
  • Added a "Modify classpath action" to script dialogs
  • Telemetries that show rates, such as recorded throughputs, are now shown as histograms
  • Reorganized probes into new categories: "Databases", "HTTP, RPC & JEE" and "JVM & Custom Probes"
  • JProfiler now optionally offers to save a snapshot first when detaching from or stopping a profiled JVM
  • Added support for profiling on Linux Alpine ARM
  • Show the number of rows in the "total" line of monitor views
  • Added a "Duplicate recording profile" action in the recording profiles dialog
  • Locking history graph: Added a "Select between bookmarks" action
  • Bugs fixed:
  • Monitor history and locking history graph view: On Java 14+, some java.util.concurrent monitor objects were not shown for "waiting" entries.
  • Expanding multiple levels in the probe hot spots views did not work
  • View dialogs were sometimes centered on the wrong window
  • The filter history for some trees was not persistent
  • Call tree flame graphs: The "Set as root" action was not available on the bottom row

New in JProfiler Portable 13.0.7 (Jun 27, 2023)

  • New features:
  • Support for Hibernate 6.2.3+
  • Support for MongoDB 4.10
  • Bugs fixed:
  • Attaching to a Docker container under QEMU emulation via SSH did not work
  • Attaching to Kubernetes using kubectl via SSH on a machine with a different architecture did not work
  • View settings dialog in probe telemetries was broken
  • In dark mode, selected areas in the locking history graph and the time view of the heap walker were not clearly visible
  • When exporting incoming and outgoing reference views in the heap walker to CSV or XML, string values for the references were truncated
  • In the class loader and exception probes, the hotspot view did not show percentages in the count column
  • HTTP Client probe: For the Java 11 HTTP client, if time calculation including response body consumption was selected, the payload was not recorded when the streamed body was closed before it was consumed
  • ProGuard method and field names were not deobfuscated if the SourceFile attribute was retained since ProGuard 7.2.2

New in JProfiler Portable 13.0.6 (Mar 18, 2023)

  • New features:
  • Support for Kubernetes attach that involves interactive instructions in the output of kubectl for authentication purposes
  • Support for Hibernate 6.2 CR3
  • Support for Vertx 4.4
  • Bugs fixed:
  • Quick search action did not work in probe hot spots views
  • Improved detection of docker and kubectl executables as well as Kubernetes authentication plugins on macOS
  • Docker attach via SSH with user switch: Taking an HPROF heap dump did not work.
  • Docker attach via SSH with user switch: Attaching to minimal images without tar did not work.
  • Docker attach on local Linux machine did not work when switching to the root user

New in JProfiler Portable 13.0.5 (Jan 10, 2023)

  • New features:
  • Support for profiling Java 20
  • Support for Hibernate 6.2
  • Support for the Spring 6 WebFlux client
  • Support for Apache CXF JAX-RS 4.0
  • Added "Session->Save temporary session" to save a temporary session that is created when attaching to a JVM
  • Bugs fixed:
  • Regression in 13.0.1: On Windows, the progress dialog after the session startup dialog was shown outside the screen so the UI could appear as frozen during retransformations in attach mode
  • Regression in JProfiler 13: The "Set as root" action was removed from call tree flame graphs, double-clicking to set a root also did not work anymore
  • Regression in JProfiler 13: HTML export of graphs was broken
  • Call tracer: The stack trace display could show wrong data when tracing multiple threads
  • Call tree flame graphs: The header label always displayed the number of nodes and rows for the entire call tree and not for the current root
  • Call tree flame graphs: Unrecorded times were shown as a flame graph node
  • Kubernetes support: When using the attach action from an IDE integration, the "On a Kubernetes cluster" option did not work
  • Kubernetes support: A custom location for kubectl was not applied when executing kubectl on a remote machine
  • Executor tracking: Some calls were not tracked with third-party ExecutorService implementations
  • Thread dumps in snapshots were not shown
  • URL splitting with generic scripts did not work

New in JProfiler Portable 13.0.4 (Oct 10, 2022)

  • New features:
  • Added support for Netty 4.1.81+
  • Added support for RESTEasy 6.2+
  • Bugs fixed:
  • If dark mode was used in macOS 13 (Ventura), the JProfiler UI would hang on startup
  • JavaScript XHR view: The tree did not get the keyboard focus
  • JavaScript XHR view: XML export contained styling
  • When recording profiles were added or removed, the popup menu of the "Start recording" action was only refreshed for the current window

New in JProfiler Portable 13.0.3 (Aug 25, 2022)

  • New features:
  • Support for profiling Java 19
  • JavaScript XHR origin tracking now supports Chrome 104+
  • Bugs fixed:
  • Kubernetes attach with SSH failed for the first connection attempt for each host system
  • Eclipse plugin: Fixed an exception if the JRE was contained in a path longer than 80 characters
  • Some dialogs could have a wrong parent frame when multiple windows were open

New in JProfiler Portable 13.0.2 (May 4, 2022)

  • New features:
  • Support for Ktor 2.0
  • Attaching as root to JVMs that were not started by root now also works for Java versions lower than 11
  • Bugs fixed:
  • Kubernetes attach: If listing pods in all namespaces is not allowed, JProfiler now tries to list all available namespaces separately with the default namespace as a fallback
  • Remote attach and container attach: Fixed misleading error messages that recommended to switch users if an error occurred
  • Remote attach and container attach now also works if /var/tmp is not writable
  • Large tree views performed badly when scrolled with the trackpad on macOS
  • Async sampling: Since Java 11.0.15, native libraries that were loaded after async sampling was started could not be intercepted and profiled

New in JProfiler Portable 13.0 (Jan 31, 2022)

  • New features:
  • Support for attaching to JVMs running in a Kubernetes cluster
  • Support for attaching to JVMs running in Docker Desktop on Windows and macOS
  • Support for attaching to OpenJ9 JVMs
  • Local attach: Added a user switcher to profile JVMs started by different users on Linux
  • Local attach: On Windows it is now possible to attach to a JVM started by the same user that runs in a different session
  • Local attach: Differing settings for the temporary directory no longer prevent jpenable on Windows to attach to a JVM when the PID is provided
  • Local attach: Elevated users can now attach to JVMs started by any user with jpenable on Windows when the PID is provided as long as the JProfiler installation is readable for that user
  • Remote attach: Support attaching to JVMs running in Redhat UBI-minimal images
  • Remote attach: FreeBSD and AIX are now supported
  • Support for profiling OpenWebStart
  • Sunburst diagram for the biggest objects view of the heap walker
  • Support for the Reactor Netty web client
  • Support for the Spring Webflux HTTP client
  • The "Java EE components" aggregation level is now called "JEE/Spring" and includes Spring classes that are annotated with @Component or derived annotations
  • Calls into proxy classes for profiled interfaces are now shown in the call tree. This adds support for a wide range of frameworks based on code generation.
  • Dark mode for documentation
  • Pressing the Delete key in view filter popups now deletes the selected entry
  • Streamlined integration wizards
  • Support for switching between light and dark mode on the fly
  • Adding the option ",loopback" to the -agentpath VM parameter for profiling will restrict connecting JProfiler clients to the current machine. This is added by default for sessions launched by JProfiler and by IDE integrations.
  • Reorganized general settings dialog
  • Async sampling mode is now supported on macOS ARM with Java 17
  • PHD dumps can now be taken without the presence of the java.management module on newer IBM VMs
  • CPU telemetry on Windows is now recorded without the presence of the java.management module
  • Added support for Hibernate 6
  • Added support for MariaDB connector 3
  • Added support for ktor 2
  • Added support for RestEasy 6
  • Added support for server side events in RestEasy, Jersey and CXF
  • Bugs fixed:
  • The controller MBean was not always added to an existing MBean server
  • Heap walker: In the incoming references view, node selections from the path to GC root search were not memorized when moving back and forth in the heap walker history
  • Call tree: Jumping to execution sites and to the probe call tree was not reliable
  • CPU threshold triggers were broken on non-Windows platforms
  • SSH password authentication did not work when connecting to FreeBSD 13
  • NetBeans plugin: Profiling Maven projects did not work for NetBeans 12.6
  • IDE integrations: When multiple JProfiler windows were opened from an IDE integration, some windows could not be used for standalone sessions anymore

New in JProfiler Portable 12.0.4 (Sep 17, 2021)

  • Bugs fixed:
  • Opening snapshots from the Windows Explorer did not work if JProfiler was already started
  • Opening an HPROF snapshot from a Docker container could fail sometimes
  • "All objects" and "Recorded objects" views: Sorting by the "Difference" column did not always work
  • Heap walker: Adding more instances to an array reference in the outgoing references view only worked once
  • Jpenable did not work when started with Java 16+
  • Fixed problems with dialog windows on recent macOS versions

New in JProfiler Portable 12.0.3 (Jun 24, 2021)

  • New features:
  • Floating license customers can now request license keys for the web license server instead of using the on-premises license server
  • Added support for MongoDB 4.3
  • Added integration wizards for Glassfish V6 and Jetty 11
  • Bugs fixed:
  • Socket probe: Not all non-blocking I/O was recorded when profiling with Java 17
  • HTTP probe: In the newest releases of RestEasy 3.x, async APIs did not work with sync HTTP clients
  • Request tracking of Kotlin coroutines did not work with Kotlin 1.5 in attach mode

New in JProfiler Portable 12.0.2 (Mar 18, 2021)

  • New features:
  • Support for the MongoDB 4.2+ reactive driver
  • Full support for Oracle JDBC driver 21.0
  • Support for encrypted and authenticated communication with the floating license server
  • Support for remote checkout of a license from the floating license server
  • Bugs fixed:
  • Thread dumps view: The comparison dialog for selected threads was not shown correctly in dark mode
  • Could not select hidden directories for JRE/JDK home directories which was a problem for JREs installed in .sdkman
  • Profiling did not work on some Linux Alpine machines
  • Tree views: The text in the node detail dialog and in the text from the copy to clipboard action could be garbled for particular character sequences
  • Fixed SSH host key verification for multi-hops tunnels

New in JProfiler Portable 12.0.1 (Jan 12, 2021)

  • New features:
  • The JProfiler GUI now runs natively on ARM macOS (Apple Silicon)
  • Added full support for profiling Java 16
  • Added full support for Oracle JDBC 19.9
  • Bugs fixed:
  • Io.netty.channel.epoll.Native.epollWait was not added to the Net I/O thread state

New in JProfiler Portable 12.0 (Nov 24, 2020)

  • New features:
  • Flame graphs
  • Support attaching to JVMs in Docker containers
  • Support for profiling on Alpine Linux
  • Support for profiling macOS arm64 JVMs
  • Support for Netty in the new HTTP Server probe
  • Remote attach: Support taking HPROF snapshots for non-root users that are not the SSH login user
  • Remote attach: Support connecting to machines where no JRE is available for the login user
  • Remote attach: Support SSH users that have no home directory or no writable home directory
  • Attach functionality now supports JVMs started with -agentpath
  • NetBeans plugin: Added an "Attach to running JVM" action
  • NetBeans plugin: Added preference page where JProfiler executable and new window option can be edited
  • Support for Jakarta EE 9
  • New cross-platform look and feel
  • Localization to Simplified Chinese
  • Hyperlinks in the UI are now focusable and can be used with the keyboard
  • Support mouse navigation buttons for all histories in the UI, including the view selector
  • Added a "Classes grouped by class loaders" inspection in the heap walker
  • Bugs fixed:
  • Source and bytecode navigation in stack trace lists did not work for methods that had a parameter of type short
  • The "Return to call tree" action in call tree analysis view in the probe section did not activate the correct probe view in case a different probe view was activated in the meantime
  • Top level objects in the reference views of the heap walker did not show object IDs if the "Show object IDs" setting was enabled
  • Websphere integration wizard did not work in offline mode
  • Fixed several UI problems when working with multiple monitors that have different DPI settings
  • Payload nodes in probe call tree did not handle line breaks well and very long payload strings tool a long time to render
  • Payload call tree did not work as expected for very large recordings
  • Integration wizard for profiling launchers generated by install4j did not work for app bundles on macOS
  • Remote attach: Using root as the SSH users did not work if the home directory of the root user was not readable by other users
  • Fixed problems with trackpad scrolling on macOS

New in JProfiler Portable 11.1.4 (Jul 31, 2020)

  • New features:
  • eclipse integration: Support for Bndtools launch delegates
  • Bugs fixed:
  • Exporting the entire tree of a hot spot view with no hot spots would hang the UI
  • Invoking the "Hide selected" action in the probe hot spots view halted view updates
  • Attach functionality was broken when running JProfiler with Java 14+
  • Executor tracking could cause exceptions with Oracle Universal Connection Pool
  • Host key verification did not work correctly for multi hop connections and non-standard ports
  • IDE integration session settings could not be changed for OpenJ9 VMs

New in JProfiler Portable 11.1.3 (May 27, 2020)

  • New features:
  • Jpenable, jpdump and jpcontroller now also work with Java 12 and higher. They continue to work down to Java 1.6.
  • Bugs fixed:
  • Telemetries with area graphs could be broken when data was consolidated

New in JProfiler Portable 11.1.2 (Mar 13, 2020)

  • New features:
  • HTTP requests probe: Added support for OkHttp 4.4 and Apache HttpClient 5.0
  • MongoDB probe: Added support for the 4.0 Java driver
  • Bugs fixed:
  • The "address" agent option for listening on a particular network interface did not work on AIX
  • IntelliJ IDEA plugin: Profiling Gradle run configurations did not work anymore since IDEA 2019.3

New in JProfiler Portable 11.1.1 (Feb 13, 2020)

  • Bugs fixed:
  • Regression in 11.0: Limited timers with count 1 did not work for offline profiling
  • Linux/Unix: The JProfiler UI could not be started with Java 8u242 because of an NPE that was thrown at startup
  • macOS: The jpexport command line utility threw a HeadlessException when run with a non-Jetbrains-JRE
  • Quick attach: When using the filter text field, the wrong process was attached to
  • Expansion tool popups for long items in lists, trees and tables only worked on the primary monitor
  • Fixed an obfuscation problem with the profiling platform that prevented native library loading
  • The sample for the profiling platform had missing dependencies
  • The JProfiler samples could not be started from the command line in read-only locations, such as in the directory created by the Windows installer

New in JProfiler Portable 11.1 (Jan 8, 2020)

  • New features:
  • Async sampling mode without safe-point bias on macOS and Linux
  • Native sampling on macOS and Linux
  • Support for opening JDK flight recorder snapshots
  • The new outlier detection view shows methods that have exceptionally slow invocations with respect to their average time
  • Async tracking now works with sampling
  • A "Show threads" action to the call tree and hot spot views to show all threads that contain the currently selected call stack
  • Call tree removal: Added an option to remove entire classes or packages, depending on the aggregation level
  • Call tree removal: Added an option to remove self-time only
  • Improved painting of zoomed out telemetries
  • Zooming in and out in telemetries now preserves the center of the view unless auto-scrolling is active
  • Telemetries can now be zoomed with CTRL + mouse wheel or zoom gestures on macOS
  • Zoom in and zoom out actions now work when scale to fit is active
  • Support for profiling on the Linux PowerPC Little Endian (PPCLE) architecture
  • Remote SSH attach and jpenable command line utility now work with a JVM that includes only the java.base module
  • Bugs fixed:
  • In some places, JProfiler used binary orders of magnitude (factors of 1024) instead of decimal orders of magnitude (factors of 1000)
  • Monitor tool tips in the thread history view were only shown if the locking history graph was shown before
  • Threshold spinner in the monitor usage history view did not react to the enter key
  • ZIP files could not be added in the source path selector in the session settings
  • Tree maps did not work for untimed call trees such as the exceptions probe
  • IntelliJ IDEA plugin: When profiling code that was compiled with JDK 11+, nested lambdas no longer had gutter icons for incoming and outgoing calls
  • Estimated retained class sizes were not shown for object arrays
  • "Retained size" column in heap walker did not respect the "Size scale" view setting if shallow sizes were selected as the primary measure
  • "Scale to fit" button in telemetry views did not propagate the new setting immediately to all other telemetry views
  • Wrong "without CPU recording" node was shown in payload hotspots for very large recordings
  • Attributes in MBean viewer were not sorted alphabetically
  • Fixed exception in heap walker when the heap contained contained a very large number of primitive arrays
  • Regression in JProfiler 11.0: Horizontal scrolling in views with table trees was broken
  • Fixed missing whitespaces in font rendering with 8u232+/11.0.6+ on Linux
  • SSH remote attach to 64-bit ARM platforms did not work
  • IDEA plugin: An exception was thrown in 2019.3 Ultimate Edition if the Grails plugin was disabled
  • IDEA plugin: Automatic package calculation did not work for Kotlin files
  • IDEA plugin: When profiling code that was compiled with JDK 11+, nested lambdas no longer had gutter icons for incoming and outgoing calls
  • IDEA plugin: When using the "Activate IDE" action in JProfiler, the IDE window was no longer raised since 2019.3

New in JProfiler Portable 11.0.2 (Sep 24, 2019)

  • New features:
  • Full support for Hibernate 5.3 and 5.4
  • Help and Javadoc are now shown online, because local help files do not work with some modern browsers anymore
  • Bugs fixed:
  • Regression in 11.0: Pressing the left key did not collapse nodes in trees anymore
  • Memory telemetry: "Compressed Class Space" is now subtracted from the "Metaspace" pool and shown as "Metaspace (non-class)", so the non-heap pools are added up correctly
  • Fixed a problem where probe data in a snapshot could not be read
  • Fixed a problem with sorting probe hot spots
  • Call stacks were not shown in the probe events view for deferred events

New in JProfiler Portable 11.0.1 (Jul 5, 2019)

  • New features:
  • Support for profiling Java 13+
  • Configurable custom UI font and high-contrast timeline colors in the general settings dialog
  • HTTP probe: Support for OkHttp 4.0, RESTEasy 4.1
  • Cassandra probe: Support for Cassandra 4.0
  • JDBC probe: JDBC driver support for Oracle 19.2, Db2 11.5
  • Notarized binary for macOS
  • Improved error handling for truncated HPROF snapshots
  • Bugs fixed:
  • The Windows ZIP archives did not have HiDPI enabled
  • The JProfiler UI did not have per-monitor DPI awareness
  • Fixed various UI problems with fractional HiDPI
  • Attach mode did not work on Linux ARM
  • Working directory was changed when profiling with the NetBeans plugin
  • HTTP probe: With the Java 11 HTTP client, recorded times of error events for async connections could be wrong
  • The time axis for the probe telemetries had a wrong offset in some scenarios
  • Probes: The control objects view did not have a "Show row details" action

New in JProfiler Portable 11.0 (Mar 19, 2019)

  • New features:
  • HTTP probe for outgoing requests
  • Remote request tracking for HTTP requests
  • "Inline Async executions" call tree analysis for call tree and hot spot views
  • Automatic detection of tracking types that would yield data in the currently profiled JVM
  • Async tracking status display above call tree views with relevant actions
  • Detect whether calls in non-profiled classes would create async calls and offer to record them
  • Async tracking for Kotlin Coroutines
  • New light and dark look and feels based on IntelliJ IDEA with HighDPI support for Windows and Linux
  • Non-interactive mode for jpcontroller
  • Automatic filter detection for IDE integrations
  • Allocation sampling
  • Restructured session settings dialog without the separate "Profiling settings" dialog
  • Default settings for new sessions on the "Session defaults" tab of the general settings dialog
  • The "Method call recording" tab of the default settings includes an option to switch off the "instrumentation or sampling" question for new sessions
  • Action to copy selected setting categories from other sessions in the session settings dialog
  • Less verbose and more human-readable config file format that does not write default settings
  • Ask the user whether to keep the previous settings when attaching to a JVM that is already profiled with different settings
  • For offline profiling, it is no longer necessary to specify a session ID in the -agentpath VM parameter if the config file only contains a single session
  • Using the "id" or "config" option in the -agentpath VM parameter now automatically activates the "Startup immediately" mode
  • It is now possible to use the ~ character in the "config" -agentpath VM parameter option to refer to the user home directory on all supported platforms
  • View settings are now global and do not have to be changed separately for each session
  • Heap walker: Support for recording primitive data in IBM JVMs
  • Heap walker: Support for all inspections with the IBM JVMs
  • File and process probes are supported for IBM 8+ JVMs
  • "Save HPROF snapshot" UI action and "Create an HPROF heap dump" trigger action now generate PHD dumps for OpenJ9 JVMs
  • SSH tunneling for floating licenses
  • Support combined public key and password authentications for SSH servers
  • Support encrypted key files for #PKCS5 and Putty
  • Cache manually entered JVM location for remote ssh quick attach
  • The password for the same private key is not queried repeatedly for multi-hop connections anymore
  • Heap walker: Show string values for char arrays in the outgoing reference view
  • Heap walker: Tabular display of the contents of char and byte arrays in the outgoing reference view
  • Heap walker: The "Direct calls to methods of unprofiled classes" node in the "Allocations" view can now be selected for creating a new object set
  • Heap walker: Added a total string size column to the grouping view produced by the "Duplicate strings" inspection
  • Support for profiling Java 12+
  • Terminate the launched process from eclipse and NetBeans IDE integrations if the session startup dialog is canceled
  • Added the JPROFILER_AGENT_OPTIONS environment variable to allow setting debug parameters for the agent in situations where the "-agentpath" VM parameter cannot be modified
  • "Trigger heap dump" action: Added an option for recording primitive data
  • Added quick search functionality to the detail dialog of nested tables in the probe control objects view
  • The servlet probe now intercepts all Jetty handlers, adding support for Javalin, Spark and ktor-jetty
  • Added a "Shorten packages" option in the view settings dialog of call tree and hot spot views
  • Support profiling on JVMs that only contain the java.base module
  • Improved CSV export: All numeric columns are exported as numbers and not as text, consistent display of units in the header row
  • Pressing Ctrl-C in data tables now copies the CSV lines to the clipboard
  • Bugs fixed:
  • Nested tables in the probe control objects view were broken when the sort order was changed
  • The ID column in the table for selecting a running JVM was not sorted numerically
  • Command line applications did not list JVMs in ascending order of their PID
  • For profiling sessions that were started from IDE integrations, changed settings were not saved immediately. When profiling the same session again, the previous settings would be used.
  • Expanded nodes were not kept when reloading a call tree analysis
  • Using multiple script probes or method triggers for the same method did not work
  • Statistics in detail dialog were not correct for the "Direct calls to methods of unprofiled classes" node in the heap walker and for the target method of a "Set as root" action
  • Quick search in the detail dialog produced wrong highlights if the displayed text contained DOS line breaks
  • The inline display of a string value in the heap walker reference views was cut off if the string contained a line break
  • Adding more instances in the incoming or outgoing reference views of the heapwalker after using the heapwalker navigation broke the display
  • When exporting the entire tree in the heap walker allocation view, the UI would hang with a progress dialog
  • In the heap walker allocation views, icons for all nodes were shown with the decoration for unprofiled classes
  • Heap and thread dumps that were triggered in the agent were only displayed in a connected JProfiler UI if the corresponding view was activated at least once
  • "Analyze" action was permanently disabled after stopping and starting a session in the same window
  • The last chosen export format was not remembered for each view type
  • The action to show differences between two thread dumps could throw an exception
  • Command line export applications on Linux with Java 8 could throw exceptions because of the Gnome accessibility bridge
  • Fixed various problems with the icon overlays for unprofiled methods in the hot spot views
  • The "profile" Gradle task did not work with Gradle 5+
  • Quick search in call trees did not work for payloads and method arguments
  • Following a payload hyperlink from the call tree view into the "Class loaders" probe did not select call tree view
  • Non-functional call site hyperlinks were shown in probe views
  • Regression in 10.0: Quick search in call trees did not find all results anymore

New in JProfiler Portable 10.1.6 (Jan 15, 2019)

  • Bugs fixed:
  • Fixed an exception when running the JProfiler GUI with Java 11
  • Fixed a crash when profiling a Java 11 JVM with class data sharing (CDS) enabled
  • Fixed a crash with classes generated by Mozilla Rhino
  • Fixed a crash when taking a heap dump with an IBM JVM
  • Fixed an IndexOutOfBoundException during heap dump parsing

New in JProfiler Portable 10.1.5 (Jan 11, 2019)

  • Bugs fixed:
  • Fixed an exception when running the JProfiler GUI with Java 11
  • Fixed a crash when profiling a Java 11 JVM with class data sharing (CDS) enabled
  • Fixed a crash with classes generated by Mozilla Rhino
  • Fixed a crash when taking a heap dump with an IBM JVM
  • Fixed an IndexOutOfBoundException during heap dump parsing

New in JProfiler Portable 10.1.4 (Oct 12, 2018)

  • New features:
  • Support for profiling OpenJ9 JVMs for Java 9+
  • Bugs fixed:
  • On macOS, an explicit update check could throw an NPE under some circumstances
  • Opening a session in a frame where a custom probe view with call tree analyses was open previously would throw an exception and break the UI
  • Custom probes compiled with -target 11 did not work

New in JProfiler Portable 10.1.3 (Sep 9, 2018)

  • New features:
  • Support for MongoDB 3.8
  • Bugs fixed:
  • If an exception during remote attach had a null message, an exception was thrown and the original error was not reported
  • Overview telemetries: If the value of the maximum label had a value of 1, it was displayed with an incorrect unit
  • Support for running the JProfiler UI and its command line tools with Java 10 and Java 11
  • Allocation recording notice in the heap walker allocation views was broken
  • Prevent crash when a class is loaded in a different versions where the super/sub class relationship is reversed
  • Exporting the entire tree in call tree analysis views made the UI hang
  • Remote attach with an SSH multi-hop tunnel could fail if local host name resolution was different from that of intermediate hops
  • IDEA plugin: Support source code navigation for Kotlin 1.2.60+
  • IDEA plugin: Fixed exception when opening JProfiler snapshots from IDEA with recent IDEA versions

New in JProfiler Portable 10.1.2 (Jun 13, 2018)

  • Bugs fixed:
  • Attaching to SAP JVMs did not work
  • HPROF snapshots could not be triggered from JProfiler UI with SAP JVMs
  • Fixed a problem where remote attach failed because an XML response could not be parsed
  • Fixed a race condition for thread name changes

New in JProfiler Portable 10.1 Build 10184 (Feb 26, 2018)

  • New features:
  • New documentation that has been rewritten from the ground up
  • Documentation is now also available as an eBook in epub and Kindle formats
  • Context-sensitive help relating to UI elements is now available directly in the UI
  • Redesigned APIs for custom probes
  • The new injected probe API replaces the old API and can be used to write probe for 3rd party products
  • The new embedded probe API makes it possible to write self-contained probes for your own code and ship them together with your product
  • Script probes that can be configured directly in the JProfiler UI and allow you to add payloads to the call tree, similar to the SQL strings of the JDBC probe
  • A Gradle plugin for automating profiling and invoking the command line tools
  • New merged reference views in the heap walker
  • A "Merged dominating references" view in the heap walker
  • Class and class loader groupings in the biggest object view in the heap walker
  • Support for the MongoDB Async Driver
  • Support for MongoDB 3.6
  • Support for running the JProfiler UI and all command line tools on Java 9
  • Support for compiling scripts in JProfiler with Java 9 JREs
  • Support for profiling Java 10
  • Improved the startup time of the JProfiler UI
  • Removed the "Live instances" GC root in the heap walker, so it is easier to solve class loader leaks
  • Added an overview telemetry for probes like for the VM telemetries, so you can see all telemetries of a probe at once
  • Implemented quick search in the node detail dialog
  • Added an export option for including the session name in the suggested file name
  • Added configurable time scales for the call graph and the table views in the "Monitors & Locks" view section
  • Added configurable time scales for method statistics view, one for the total time column and one for all other columns
  • Executor request tracking can now reliably track multiple usages of the same Runnable instance
  • Added request tracking support for classic EJBs on Wildfly 11
  • Graph views: Ctrl+Space (Cmd+Space on macOS) toggles selection of highlighted nodes when quick search is active
  • eclipse IDE integration: Improved source navigation to lambda methods and anonymous classes
  • The session settings for snapshots are now unmodifiable to prevent confusion
  • Added a "Run GC" trigger action
  • Bugs fixed:
  • Heap walker: The path to GC root search did not prefer shortest paths and opened unhelpful nested GC roots when multiple roots should be found
  • Method splitting: Fixed a call tree corruption that occurred if an unprofiled split method threw an exception
  • Method splitting: The hyperlink for resetting the splitting cap was not displayed in the call tree
  • When opening a snapshot and choosing the deobfuscation option in the file chooser, choosing "None" as the deobfuscator prevented opening of the snapshot
  • MBean browser: The filter text field for the MBean tree was broken
  • Unfreezing the monitor history view or the locking history graph removed all extra tool bar buttons
  • Command line comparisons: Using the "sortByTime" option could lead to a ConcurrentModificationException
  • jpanalyze did not work with a floating license server
  • Probes could prevent classloader garbage collection by holding on to instrumented classes
  • Heap walker: If selecting retained objects with the "Thread locals" inspection, weakly referenced objects could be included
  • Heap walker: The "Thread locals" inspection threw an exception when no thread locals were present
  • Scripts did not resolve classes from directory class path entries that contained JAR files
  • Regression in 9.2: Monitor tool tips in thread history views were not displayed anymore
  • Applying overhead hot spots did not save the session settings, so these changes could easily get lost
  • eclipse IDE integration: The preference page did not show the JProfiler executable when no profiling session had been started yet after performing the integration from the JProfiler UI
  • Quick search in the locking history graph did not work
  • Disabling request tracking in the profiling settings did not completely disable all tracking types
  • After applying new profiling settings in a live profiling session, it was not possible to add or edit custom telemetries
  • The time in the header of the live allocation views was not updated if the view was recalculated from the "Show classes" analysis or due to a call tree root change
  • Status bar information when hovering over tool tips in graphs were hidden after a short time in live sessions
  • Heap walker: Stack traces in the node detail dialog of the incoming references view were wrapped unless the detail dialog was shown with the "Show more" hyperlink
  • macOS: Repeated use of the right arrow key did not select first child nodes in trees other than call trees
  • Class tracker: It was not possible to select the tracked class for the command line export
  • When the "Expand entire tree" option was selected in the export options dialog of the hot spots view, the export would hang
  • The default thread status for the method statistics command line export as well as for the probe call tree and probe hot spot command line comparisons was "Runnable" and not "All states" like in the GUI.
  • Fixed a rare deadlock at startup when profiling Java 1.6 VMs
  • File watcher thread and some NIO channels were shown in the runnable thread state
  • There was no auto-update for floating probe views if the probe was not selected in the main window
  • It was possible to invoke the "Add exceptional method", "Split method with a script" and the "Add method trigger" action for native and abstract methods that cannot be instrumented
  • Under some circumstances, the initial window size on macOS could be minimal, only showing the window controls
  • When saving a snapshot with jpcontroller and the specified relative path was not writable, a message with the wrong absolute path was written to the terminal
  • For generic types, the code editor suggested non-public methods and fields in code completion

New in JProfiler Portable 10.0.4 Build 10084 (Oct 7, 2017)

  • Bugs fixed:
  • macOS: Fixed the empty menu bar that could occur with macos 10.13 in non-English locales
  • Regression in 9.2: Node detail dialog did not wrap long lines
  • Class tracker: In snapshots, a wait cursor was always displayed on the view
  • When opening a snapshot and choosing the deobfuscation option in the file chooser, choosing "None" as the deobfuscator prevented opening of the snapshot
  • Fixed a StackOverflowError when opening the profiling settings dialog on Linux with a non-default look and feel
  • Command line export did not use "All states" as default thread status for the probe hot spots view
  • Heap walker: The path to root search did not always prefer the shortest path

New in JProfiler Portable 10.0.3 Build 10078 (Jul 21, 2017)

  • New features:
  • jpcontroller: When saving a snapshot, print the absolute path where the snapshot has been saved on the remote machine
  • Bugs fixed:
  • Fixed a crash after a class retransformation error
  • Too many dead threads could overload the JProfiler UI
  • IDEA plugin: source navigation to lambda functions did not work correctly with sampling and older Java compilers
  • eclipse plugin did not work correctly when eclipse was installed in a directory with spaces
  • MBean browser: Quick search in the tree of MBeans did not work
  • Quick search in call trees stopped at nodes with payloads under some circumstances