JProfiler Changelog

What's new in JProfiler 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 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 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 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 13.0.6 (Mar 17, 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 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 13.0.4 (Oct 11, 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 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
  • Switching windows in the Window menu did not work on macOS
  • Fixed rare cases of missing radio buttons on macOS

New in JProfiler 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 13.0.1 (Apr 5, 2022)

  • New features:
  • When attaching to Docker or Kubernetes containers, include the name of the container in the created session to make it easier to work with multiple JProfiler windows
  • Bugs fixed:
  • If a local kubectl or docker location was configured on macOS, Kubernetes or Docker attach did not work
  • When attaching to Docker or Kubernetes containers, the container names could be cut off in the selection dialog
  • Regression in 13.0: Dialogs that were opened, closed and opened again were not centered again on their parent window
  • JavaScript XHR view: The message that no XHR calls were recorded was hidden if the tree was focused
  • When changing the session name in the session settings dialog, the title of the JProfiler window was not updated
  • Fixed rendering problems on Windows with some non-HiDPI displays
  • JProfiler windows were closed when opened from an IDE integration and the profiled process was terminated externally

New in JProfiler 13.0 (Feb 1, 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 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 12.0.3 (Jun 25, 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 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 12.0.1 (Jan 13, 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 12.0 (Nov 25, 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 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 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 11.1.2 (May 27, 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 11.1.1 (Feb 14, 2020)

  • Bugs fixed:
  • Regression in 11.0: Limited timers with count 1 did not work for offline profiling
  • 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 11.1 (Jan 9, 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 11.0.1 (Jul 10, 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 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 11.0 (Mar 20, 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 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 10.1.4 (Jan 11, 2019)

  • 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 10.1.3 (Sep 10, 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 10.1.2 (Jun 14, 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 10.1.1 (Apr 21, 2018)

  • New features:
  • Attaching to a running JVM for the first time is now more than 5 times faster
  • Support for MongoDB 3.7
  • Bugs fixed:
  • Regression in 10.1: Attaching to Java 9 FCS or EA JVMs did not work anymore
  • Probes: Open and close events created useless payload links in the call tree
  • Heap walker: The "Overhead options" tab of the heap walker options tab was broken when profiling with an IBM JVM
  • Java 9 JREs on some Linux distributions did not work with the JProfiler GUI
  • When classes with JNA direct mappings were instrumented, the JNA library threw an exception
  • Fixed a call-stack corruption bug that could occur when instrumentation was initialized in a non-profiled class
  • Fixed a crash in the heap walker reference views that occurred when profiling with IBM JVMs and Java 1.5 JVMs

New in JProfiler 10.1 (Feb 27, 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 10.0.4 (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 10.0.3 (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

New in JProfiler 10.0.2 (Jun 23, 2017)

  • New features:
  • Added a keyboard shortcut for the "Show source" actions
  • Bugs fixed:
  • Regression in 10.0: certain types of larger HPROF heap dumps could not be opened anymore
  • Regression in 10.0.1: jpenable did not work with Java 6
  • Remote integration wizard: When downloading agent files, no proxy dialog was shown when the connection failed
  • JProfiler did not work when installed in a non-ascii path on Windows
  • Fixed LogManager exception when profiling Wildfly with an IBM JVM
  • Do not warn for excessive instrumentation when selecting profiled classes in the package browser and sampling is used
  • eclipse IDE integration: When profiling JUnit run configurations, the session startup dialog was not shown

New in JProfiler 10.0.1 (Mar 31, 2017)

  • New features:
  • IDEA integration: Profiling gradle run configurations is possible starting with 2017.2 builds
  • Bugs fixed:
  • IDE integrations did not work under some circumstances
  • IDEA integration: Fixed profiling of local application servers
  • IDEA integration: Grails 2 run configurations could not be profiled
  • Added fallback strategies when temporary directory is not writable or does not exist
  • Anti-aliasing of row headers in timeline views was wrong

New in JProfiler 10.0 (Mar 7, 2017)

  • New features:
  • Zero-configuration remote attach and HPROF heap dumps via SSH
  • Complexity analysis view for analyzing the Big-O behavior of selected methods
  • Ability to pin, close and re-calculate call tree analyses
  • Call tree analyses for the call tree graph
  • Show the time when the data for the call tree analysis was collected
  • "Show classes" call tree analysis in the live memory section
  • New object analysis in the heap walker
  • "Mark heap" action to determine the base line for the new object analysis in the heap walker, also in the API and as a trigger action
  • Added a type filter option in the reference views of the heap walker with an optional instanceof behavior
  • "Show fields with null values in outgoing references view" option now also works for static fields
  • The toString() filter in the outgoing references view of the heap walker now also supports java.lang.Class objects for snapshots
  • "JVM exit action" in the session startup dialog for saving and immediately opening a snapshot when the JVM exits
  • Remote integration wizards now support SSH-connections
  • Added the option to synchronize the config file via SSH
  • Remote integration wizard: Added an "Edit Session And Synchronize Config" button on the "Finish step" that is visible if the config file has to be synchronized to a remote location before the session can be started
  • IDEA: For Java and Kotlin, the call graph can be displayed in the gutter of source editors with incoming and outgoing calls in popups
  • IDEA: List of hot spots is shown in the IDE, providing entry points for performance analysis
  • IDEA: Jump actions into JProfiler that show nodes in the call graph or call tree analyses for back traces and outgoing calls in the call graph
  • IDEA: Recording controls in the JProfiler tool window
  • IDEA: Profiling settings are now on a project-level basis with the option for each run configuration to make them run-configuration-specific
  • IDEA: Support for profiling Grails run configurations
  • IDEA: Ability to skip the session settings dialog on a per-run configuration basis
  • IDEA: For test run configurations, automatically save a snapshot when the JVM exits
  • IDEA: Reliable window foreground activation when switching between the IDE and the JProfiler windows
  • IDEA: Improved source code navigation for Java, including precise determination of lambda call sites
  • IDEA: Support for Kotlin source code navigation
  • IDEA: Activate IDE button in JProfiler window that is visible for IDE integrations
  • Configurable cap on call tree splitting
  • "Replace literals in unprepared statements" and "Keep literals for events view" options for the JDBC probe
  • Local attach can now attach to Windows servers running with accounts other than a system account
  • Added an option to switch off native instrumentation on the "Method call recording" tab of the profiling settings
  • The call graph can now optionally use the view filter that is set in the call tree view
  • Added a filter field to the class selection dialog
  • JRE configuration dialog: Added a "Purge" action to remove JREs that do not exist anymore
  • Hot spot and objects comparisons now show entries that do not appear in both snapshots. The view settings have an option to limit the comparison to common entries.
  • Hot spots views: Added an option for displaying total times instead of self times
  • Added a "Synchronize Config File" action to the context menu of the session list that is visible for remote sessions with configured config synchronization
  • The view filters in the hot spots view are now de-coupled from the view filters in the call tree views
  • Tooltips and legends in stacked telemetries now show total values
  • The "Heap" memory pool in the "Memory" telemetry now shows the maximum heap size in the legend
  • The non-modal detail dialog now always shows method signatures for views with call trees
  • Support for HBase 1.3
  • Support for Cassandra DataStax driver 3.1
  • Support for mongoDB 3.4
  • Support for Axis2 1.7 and CXF 3.1
  • Bugs fixed:
  • Blocking and waiting thresholds for monitor recording were not used if monitor recording was started by a recording profile
  • Call tree comparison: Jump nodes of recorded probes were displayed in the tree
  • Could not modify other sessions in start center when a snapshot was loaded
  • Heap walker: In the classes view, an exception was thrown when trying to sort by the "Retained size" column
  • Fixed process probe for Java 9 on non-windows platforms
  • Control objects were not reset when probe recording was restarted and the view was not shown
  • Probe control objects view: Calendar time was shown for missing end times
  • Alert dialogs on Windows were not ant-aliased under Alloy L&F
  • Do not add snapshots that are used in the command line export to the list of recent snapshots
  • "Show Selection In Heap Walker" action did not work in the "Current monitors" and "Monitor history" views
  • Map attributes in the MBean browser were not sorted
  • Fixed a problem with orders of magnitudes in telemetry tool tips
  • Applying new profiling settings did not work for ssh connections

New in JProfiler 9.2.1 (Nov 29, 2016)

  • New features:
  • The new code sample api/samples/mean shows how to programmatically access the JProfiler MBean
  • Heap walker: In the outgoing references view, the toString() filter of the "Apply filter by restricting the selected value" action now also works for Strings in snapshots
  • Integration wizards: In "Startup immediately" mode, class retransformations are reduced for faster connections: An optional "config synchronization" screen is displayed for remote sessions, for local profiling sessions, the config file is now automatically specified.
  • Support for NetBeans 8.2
  • Netbeans plugin: Added support for profiling Maven projects
  • Bugs fixed:
  • Do not show thread dump for HPROF snapshots if no thread dumps are available (for example with jmap -F)
  • Fixed NPE for some Java 7 HPROF snapshots created with jmap -F (force)
  • Telemetry overview always scrolled to bottom when resizing the window
  • In the "All objects" and "Recorded objects" views, starting and stopping the session did not properly clear the view filters
  • Some fatal errors during a heap dump analysis were not displayed with an error dialog
  • Changing to the allocation view in an HPROF or PHD snapshot via the view selection dialog showed a progress dialog that never terminated
  • Regression in 9.2: "Start probe recording" and "Stop probe recording" trigger actions did not display the drop-down for the probe anymore
  • JProfiler UI on Solaris Sparc could not open heap dumps with newer 1.8 JVMs

New in JProfiler 9.2 (Jun 21, 2016)

  • New features:
  • Probe call tree view
  • Probe call tree comparison
  • Hyperlinks in the CPU call tree that link to the probe call tree (if payloads are not annotated directly into the call tree)
  • Exceptions probe
  • Merging and unmerging of call tree splitting on the fly
  • Call tree removal action for "what if" scenarios, also limiting the displayed data in hot spots view and call graph
  • Quick info for selected call tree nodes in the node detail dialog
  • Set root functionality and call tree analyses in allocation views
  • Improved snapshot loading performance
  • Show which views can contain profiling data in snapshots
  • Offer a list of recently loaded snapshots
  • Probe comparisons: Restrict the displayed built-in probes to the probes that were actually recorded in the selected snapshots
  • Command line comparisons and export: Fail with an error message if the required data has not been recorded
  • Heap walker: Added a view filter selector and a total line in the classes view
  • Heap walker: Show thread dumps for HPROF snapshots
  • Heap walker: For HPROF snapshots, a "show more" link in Java stack GC roots shows the entire stack trace in the node detail window
  • Heap walker: The stack reference inspections now allow you to select a specific thread
  • Heap walker: The reference views now have a "Run script on selected instance" action
  • Heap walker: Collection content selection and compact cumulated references now also work for java.util.concurrent.ConcurrentHashMap instances
  • JPA/Persistence probe: Support for Hibernate 5.2
  • Graphs are now exported as inline SVG (vector graphics) with tool tips for edges
  • Exceptional methods can now be in non-profiled classes
  • Added a "Common exceptional methods" menu to the add menu of the exceptional method configuration
  • Reduced overhead for exceptional method recording
  • Configurable cap on payload string lengths on the "Probes & JEE" tab of the profiling settings
  • Command line tools jpenable, jpdump and jpcontroller now work with Java 6+ (previously Java 7+)
  • File probe: With the "file path filter script" in the probe configuration, you can limit the scope of the measured file I/O
  • Quick search: Support paste keyboard action when quick search is active
  • Support custom Axis2 web service stubs and Apache HTTP client version 4.x for web service tracking
  • Support async web service tracking for Java 7 and 8, Axis2 and CXF
  • XHR tracking now supports Chrome 51+
  • Command line export and comparisons: Added -viewfiltermode and -viewfilteroptions parameters to configure view filters
  • Command line export and comparisons: Added -csvseparator option to change the CSV separator
  • Improved keyboard navigation with view change actions, see the "Window" menu for more information
  • Bugs fixed:
  • The inline display of the selected call tree did not display call tree splitting nodes correctly
  • Total row did not work in comparison views
  • Exporting large call trees from the command line is now much faster
  • When multiple call tree views were undocked, expansion of the call tree could lead to stuck "Expecting data" nodes
  • Auto-update information for allocation views was not shown in the status bar
  • Change the recursion display in the call tree analyses views to be less intrusive
  • For snapshots recorded in offline mode, the "Select in Heap walker" action in various views was not disabled if no heap dump was taken
  • Fixed blinking wait cursor on update in the probe hot spots views
  • Heap Walker: Stack traces in allocation selection step descriptions could show escaped characters
  • If the same snapshot is opened again, a warning is now shown with the offer to show the existing window
  • When config dialogs were shown in undocked views, the window order could be wrong
  • Do not ask "Create session" question when the profiling session has been started from an IDE integration
  • Coloring of percentage bars in "Calculate backtraces" analysis is now consistent and depends on selected summation mode
  • Export and view settings actions were not consistently enabled or disabled when views were undocked
  • Heap dump options dialog was broken when the heap walker was undocked
  • Web start sessions did not work with recent JREs
  • Fixed NPE in eclipse plugin when profiling servers
  • View filter case sensitivity was broken
  • Netbeans integration wizard did not suggest the correct location of config directory on Mac OS X
  • Regression in 9.1: MBean selection view in telemetry config was not updated if the MBean browser had already been used
  • Telemetry comparisons were clipped at the edges (regression in 9.1)
  • Command line allocation tree comparison: Could not set -aggregation option
  • Command line telemetry comparisons: The -measurements option had no effect
  • Command line threads telemetry comparison: It was not possible to compare the number of waiting threads
  • Probe hot spots comparison did not have "all thread states" as the default thread status selection
  • CPU call tree comparisons: Payloads were not properly sorted and not merged into single payload container nodes when setting view filters
  • "Undock view" action was not aligned in menus and had an incorrect key binding in the popup menu on the snapshot comparison frame
  • Call tree and probe call tree comparisons: Expansion state of the tree was not preserved when changing view filters or view settings
  • Heap walker: When "Show fields with null values in outgoing references view" was selected in the view settings, non-null references could not be expanded in the outgoing reference view
  • Probe telemetries: Current values in legend entries were not displayed under some circumstances
  • Convert local to remote wizard: Profiling settings were not copied to the newly created session
  • When attaching to Windows services, the progress dialog for starting the service detection helper is now cancellable, so the UI does not get stuck in the case of an error
  • HTML export for probe control objects views did not work if there were nested property tables
  • Files probe: Fixed recording of file channels opened with NIO.2 methods
  • Call tree history navigation with root changes or request tracking could fail under some circumstances
  • Command line exports: Times are now exported as plain numbers in CSV exports
  • Heap walker: compact cumulated references did not work for java.util.WeakHashMap instances
  • Probe descriptions could be lost and entries were shown as "null"
  • Locking graphs and thread history: Monitor tooltips were shown behind the main window on Linux
  • Filter indicator on call tree node icons did not work correctly in the call tree analyses when view filters were set

New in JProfiler 9.1.1 (Jan 12, 2016)

  • New features:
  • Java 9 support: Support for JEP 254 (Compact Strings)
  • Java 9 support: The JProfiler agent now works if only the java.base module is present
  • Java 9 support: Support new Java 9 version scheme
  • Improved support for new PostgreSQL and MariaDB drivers
  • Bugs fixed:
  • The eclipse IDE integration did not work with the new eclipse installer
  • Direct SSH connections did not work if a multi-hop connection had been configured previously
  • CPU and memory recording were active for snapshots if enabled in the initial recording profile of the session
  • Removing the call tree root in the hot spots view did not update the displayed data
  • If the JProfiler API jar was in the configured classpath, script dialogs did not work
  • MBean browser: Show the toString() result for values and operation results with a non-open type
  • Tool tips in views were not hidden when changing the view with the keyboard
  • HPROF heap dumps containing instances with missing classes can now be read
  • Fixed a memory leak for call tree analyses
  • Fixed the JProfiler executable selection on the eclipse 4.5 preference page
  • Improved the performance of the probe hotspots view
  • If probe hotspots were consolidated, control objects could lose their names
  • After canceling the quick start dialog, the start center was displayed
  • IDE integrations did not work if the IDE ran with Java 1.6
  • Object comparison: Total line was empty
  • "All objects" and "Recorded objects" views: The "Diff" column in the total line was empty
  • Biggest objects view in the heap walker: The "Show in graph action" remained disabled if an object set creation was canceled
  • When exporting a view for the first time, the initial directory in the file chooser was the root directory
  • Do not ask the "Create session" question when the profiling session has been started from an IDE integration

New in JProfiler 9.1 (Nov 21, 2015)

  • New features:
  • Connection leak detection in the JDBC probe
  • Built-in SSH tunneling for remote profiling
  • Telemetry overview showing all system and custom telemetries together
  • Diff view for thread dumps
  • Thread locals inspection in heap walker
  • Support for profiling modularized applications on Java 9
  • Support for profiling on Linux ARMv8
  • Shortened package names displayed in graph nodes, configurable with a view setting
  • Improved scroll and zoom behavior in graphs, including pinch-to-zoom on Mac OS X
  • Call graph: Outgoing calls are now always from the right side of the node
  • Call graph: Opening outgoing calls first opens the important nodes as configured in the view settings, only on the second click it opens all nodes
  • Clicking on edges in graphs jumps to the target node if invisible, Ctrl/Cmd+Click jumps to the origin node
  • Edges in graphs show tool tips if one or both nodes are invisible
  • Ctrl/Cmd+C in graphs copies text from the selected node or the tool tip text if no nodes are selected
  • Quick search in graphs
  • Undo/Redo actions for all changes to graphs
  • Call tree analysis for collapsing recursions
  • Call tree analysis for showing cumulated outgoing calls of a selected method
  • Call tree analysis for showing the backtraces to a selected method
  • Improved call tree filters to distinguish "compact" and "ignored" filters
  • Recording actions for probe events
  • Tool tips for telemetry views that snap to measured data points and show measurements for all data lines
  • Retina support on Mac OS X
  • "Set root" action in call tree now limits data in hot spots view and call graph
  • Support for MongoDB driver 3.x with both old and new API
  • Heap walker: It's now possible to retain finalizer references in the heap dump options, also the weak reference inspections can retain finalizer references
  • MBean browser: Always add "ObjectName" attribute
  • MBean browser: Show keys in MBean tree
  • MBean browser: Search now also works on folders
  • Show non-modal messages for "Run GC" and "Save snapshot" actions
  • HTTP splitting scripts and method splitting scripts can now be disabled
  • Implemented the "CPU load" telemetry for IBM VMs
  • Redesigned inspections view in the heap walker
  • Improved config of weak reference and stack reference inspections
  • Added "Case sensitive" and "Use camel humps" options for quicksearch, enabled by default
  • Bugs fixed:
  • Thread dumps view: Line numbers were not exported to HTML or copied to the clipboard
  • Improved detection of physical JDBC connections
  • Thread name changes were not tracked on Mac OS X with Java 7+
  • Very large reference graphs or call graphs graphs would block the UI when nodes were opened
  • Method graph was re-layouted when nodes were removed
  • Mac OS X: Repeated use of the right arrow key did not open the call tree along the line of the maximum performance impact
  • Call tree view filters did not work as expected in several ways
  • When using inspections, some views could be empty when going back in the heap walker browser history
  • Calling Controller.triggerHeapDump() and Controller.triggerThreadDump() when the agent is not loaded printed an exception instead of an error message
  • Overhead of MBean browser could be high
  • "analyze" and "export" ant tasks did not have attributes for deobfuscation
  • "analyze" ant task did not have options for selecting retained reference types
  • File probe did not work correctly with streams created before recording started
  • Regression in 9.0: "Recorded objects" and "All objects" views did not contain primitive arrays when viewed in a snapshot

New in JProfiler 9.0.2 (Jul 16, 2015)

  • New features:
  • Support for eclipse 4.5
  • Bugs fixed:
  • Regression in 9.0: Probe tracker stopped displaying new data after a few seconds
  • Timelines in probes could have missing data at the beginning
  • Accessing the MBean view while viewing a snapshot broke the UI
  • Fixed a rare deadlock when a thread with recorded probe events ended while a snapshot was being saved

New in JProfiler 9.0.1 (Jun 18, 2015)

  • Bugs fixed:
  • Regression in 9.0: Attaching to Windows services was broken
  • Fixed an NPE in the MBean browser
  • Custom telemetries: Errors were not cleared when the session was stopped and restarted
  • Custom telemetries: Script telemetry classes were not saved for offline profiling
  • Custom telemetries: Inner classes in script telemetries were not transmitted to the profiled JVM
  • HPROF heap dump in attach dialog: Existing files were not overwritten
  • HPROF heap dump in attach dialog: Windows services were not supported
  • HPROF heap dump in attach dialog: Could not attach to 32-bit 1.6 JVM

New in JProfiler 9.0 (Jun 9, 2015)

  • New features:
  • MBean browser
  • JavaScript XHR tracking from the browser into a profiled VM, with call tree splitting in the call tree view
  • Custom telemetries, featuring MBean attribute and script data sources
  • Multi-level HTTP call tree splitting, with freely configurable scripts
  • Method splitting in the call tree
  • HPROF heap dump option in attach dialog brings functionality of "jpdump" to the JProfiler GUI
  • Support PHD file format written by IBM Java 8 JREs
  • Heap walker: Added a "Stack referenced" inspection
  • Heap walker: Separate options for removing soft, weak and phantom references when taking a heap dump
  • Heap walker: Improved the "Weakly referenced objects" inspection with functionality matching the new selective weak reference removal for the heap dump
  • Heap walker: Added a view option "Show fields with null values in outgoing reference views"
  • Heap walker: Display retained reference types in the description of the initial object set
  • All scripts in JProfiler are now passed a "scriptContext" parameter that allows you to save state between subsequent invocations
  • "Remote attach" option for Quick attach, enabling remote attach for all IDE integrations
  • Improved view filters in call tree views with more filtering options
  • Thread dump view: Also record and display the thread status
  • The "direct calls" node in the call tree that is shown for sampling does not participate in percentage calculations anymore and is always shown last with a distinct icon
  • "All objects" and "recorded objects" views: Aggregate classes with the same name like in the heap walker
  • When using a config file to provide profiling settings from startup, it is no longer necessary to copy the "classes" directory with compiled JProfiler scripts
  • Bugs fixed:
  • Request tracking: Calls to executor methods could be too fast for microsecond resolution, in this case a call site method could be filtered and its information was lost
  • Heap walker: When searching for path to roots in the incoming references view, an "Expecting data" node could be left over after the operation
  • View filters in call tree views could not match unprofiled nodes
  • Eclipse integration failed if the previous eclipse installation directory was deleted
  • Eclipse and IntelliJ IDEA integrations: Source navigation did not always highlight the selected method
  • When using attach mode with sampling, the call tree could contain two separate Thread.run() nodes
  • During class unloading situations, wrong class names could be attributed to newly loaded classes
  • Fixed window size problems with multi-monitor setups on Linux
  • File->Open did not work for snapshots in IDEA 14.1
  • Fixed a race condition when recording probes together with sampling

New in JProfiler 8.1.4 (Mar 10, 2015)

  • New features:
  • Bundled integration for IntelliJ IDEA 14.1 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
  • Bugs fixed:
  • Regression in 8.1.3: IDE integrations were broken on some Windows systems
  • Eclipse IDE integration failed if the previous eclipse installation directory was deleted
  • "Out of memory exception" trigger could not be edited
  • Fixed a crash while retransforming Java 8 Lambda classes

New in JProfiler 8.1.3 (Feb 26, 2015)

  • New features:
  • Heap walker: Reduced memory usage for the analysis of HPROF heap dumps
  • Heap walker: Opening heap dumps is now 5-25% faster
  • Bugs fixed:
  • Regression in 8.1: Exporting graphs to HTML did not work anymore
  • For SQL statements with embedded new lines, only the first line was shown in the JDBC hot spot view
  • jpanalyze utility: The "removeunreferenced" command line option had no effect
  • Heap walker: For some obfuscated heap dumps, cumulated incoming reference counts were not calculated correctly
  • Heap walker: Do not open many temporary files during the heap analysis. This fixes all "too many open files" problems on Mac OS X 10.10
  • Fixed UI problem in the recording profiles configuration on Mac OS X
  • The default location for some file choosers was the installation directory and not the user home directory

New in JProfiler 8.1.2 (Jan 21, 2015)

  • New features:
  • Bundled integration for IntelliJ IDEA 14 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
  • Bugs fixed:
  • A very large amount of classes in the same package made snapshot opening slow
  • Fixed problem when opening snapshots with certain types of recorded monitors
  • Suggested directory for several IDE integrations was wrong on Windows and Linux
  • Fixed UI problem in probe configuration on Mac OS X

New in JProfiler 8.1.1 (Oct 22, 2014)

  • New features:
  • Added integration wizards for Tomcat 8.x, Coldfusion 11, Glassfish v4, WildFly 8.1 and Jetty 9.x
  • Bugs fixed:
  • Heap walker: If no path to a GC root was found, no warning message was shown
  • Workaround for length overflow in HPROF snapshots taken with older JVMs
  • If the session was terminated while a file dialog for saving a snapshot was displayed, the "Saving snapshot" progress dialog would hang
  • IDEA 13 integration was missing in 8.1
  • In some cases, the protocol version check between the profiling agent and the JProfiler GUI was broken
  • Could not use jpdump on JVMs that were already profiled

New in JProfiler 8.1 (Sep 26, 2014)

  • New features:
  • Heap walker: Much larger snapshots can be opened, and no -Xmx tuning is required anymore
  • Heap walker: Opening snapshots is much faster, especially for large snapshots
  • Heap walker: HPROF is offered as a minimum-overhead alternative
  • Added the command line executable "jpdump" for easily extracting HPROF snapshots from arbitrary Java processes
  • Snapshots can now be deobfuscated, with support for ProGuard and yGuard
  • Dynamic legend for all views that show a tree, explaining all icons, abbreviations and special terms
  • Support for profiling on Linux ARM hard float
  • MongoDB probe: Support for current versions of the MongoDB Java driver
  • Cassandra probe: Support for Apache Cassandra 2.x
  • Support for NetBeans 8
  • Support for eclipse 4.4
  • Native file choosers and alerts on Windows and Mac OS X
  • For CSV exports, the separator is now configurable
  • Redesigned and more useful quick-start dialog
  • Attach functionality has been moved to the start center
  • Added command line export for the method statistics view
  • Added view filter information to HTML exports
  • Added starting and stopping of probe recording to the jpcontroller command line executable
  • Temporary directory selection is now more flexible: "jprofiler.tmpdir" VM parameter, "JPROFILER_TMPDIR" environment variable, and "java.io.tmpdir" VM parameter are used in that sequence for the profiling agent and the GUI
  • You can now add both the "nowait" and the "config/id" options to the -agentpath VM parameter without a license key in the referenced config.xml file
  • The bytecode viewer is now Java 8 compatible
  • Bugs fixed:
  • Mac OS X: Mouse wheel scrolling did not work on tables
  • Mac OS X: There were no cell expansion tool tips for tables
  • Mac OS X: Window menu was always empty
  • Mac OS X: You can now also select a JRE by selecting the directory that contains the "Contents/Home" directory
  • Mac OS X: Fixed many UI glitches
  • Large heap dumps from offline snapshots were not loaded
  • Heap walker: The "Calculate estimated retained sizes" link in the classes view was visible even if retained sizes were not calculated for the heap dump
  • Heap walker: The current view could be changed while data was loading, leading to a race condition
  • Heap walker: The outgoing references view did not show primitive fields for objects without reference fields
  • Heap walker: Outgoing array references were unsorted
  • The GUI from the "Demo server" sample session did not work on Mac OS X with Java 7+
  • For request tracking across different VMs, the execution site chooser dialog was not brought to the front
  • Relative files in the configured session class path were not correctly resolved for class and method selectors
  • Support for Java language levels 1.7 and 1.8 in the code snippet editor
  • Regression: Thread start tracking was partially broken in 8.0
  • Fixed race condition in command line export
  • HTML export did not correctly export plus-minus signs, as well as the call site and execution site icons
  • HTML export for the method statistics view was missing the thread status information
  • If a socket cannot be bound by the profiling agent, don't exit or crash, but continue without a connection
  • Attach functionality did not work if the system property java.io.tmpdir was set for the JProfiler GUI

New in JProfiler 8.0.2 (Dec 3, 2013)

  • New features:
  • If the system property "jprofiler.displayName" is set the the profiled JVM, it is used in the list of locally detected JVMs
  • Bugs fixed:
  • Reduced overhead of sampling with URL splitting enabled
  • Numbers in CSV export of telemetry views had grouping separators
  • Object sizes in PHD snapshots could be wrong
  • Fixed exceptions when opening certain PHD snapshots
  • "Save HPROF snapshot" action did not work with OpenJDK
  • IDE integrations: When overhead hotspots were confirmed after the session was disconnected, they were not saved for subsequent runs of the same run configuration

New in JProfiler 8.0.1 (Jul 31, 2013)

  • Bugs fixed:
  • Fixed java.lang.NoSuchMethodErrors for the JDBC and Socket probes
  • Fixed NPE when opening certain 32-bit PHD files
  • Better handling of out of memory errors when opening huge heap snapshots
  • VM id was not cleared from the status bar when closing a session
  • Fixed hanging when recording allocation call stacks in certain cases

New in JProfiler 8.0 Build 8022 (Jul 18, 2013)

  • New features:
  • Tracking of RMI, web service and remote EJB calls between multiple profiled JVMs
  • MongoDB probe
  • HBase probe
  • Cassandra probe
  • Class loader probe with cross-link into the heap walker
  • Recording profiles for switching on multiple recording types at the same time
  • Support for loading PHD snapshots from IBM JVMs
  • Support for profiling Java 8
  • Heap walker: Optional retained size column in the classes view of the heap walker
  • Heap walker: Action to use all retained objects for the current object set
  • Heap walker: Actions to use retained objects for the selection in the classes and references views
  • Heap walker: Action to use loaded classes for a class loader instance in the references views
  • Heap walker: The class loader grouping table now has an action for using the selected class loader instance
  • Reduced overhead, synchronization and allocations in the probe recording system
  • Reduced overhead for recording exceptional method runs
  • The status bar now shows all active recording types with a balloon
  • All lists are now quick-searchable
  • Support for JAR directories for local session types
  • New demo session: "Demo server" that helps to experiment with several probes
  • Bugs fixed:
  • Script classes were not recompiled when the selected JVM was changed
  • Hot spots views: Exceptional methods runs were not merged in backtraces
  • Session settings: Relative paths in java file paths were not interpreted as relative to the installation directory

New in JProfiler 7.2.2 (Jan 17, 2013)

  • New features:
  • Biggest objects view in the heap walker: Objects in "cutoff" nodes can now be selected
  • Bundled integration for IntelliJ IDEA 12.x (the newest IDEA plugin is always available in time from the IDEA plugin manager)
  • Bugs fixed:
  • Platform API was partially broken (regression in 7.2)
  • Monitor history and locking history graph: If a very large numbers of events were recorded, opening a snapshot could be very slow
  • Monitor history graph: For snapshots, the telemetry could not be zoomed out
  • Attaching to a 64-bit JVM from a 32-bit process did not work on Solaris and HP-UX
  • Attaching to a 64-bit JRockit JVM did not work
  • Sampling did not produce any results with Java 1.4 under some circumstances (regression in 7.0)
  • Code samples in help were compressed to single lines
  • Mac OS X: IntelliJ Idea integration from JProfiler did not work
  • Fixed NPE in eclipse IDE integration

New in JProfiler 7.2.1 (Nov 16, 2012)

  • Bugs fixed:
  • Attaching to JVMs with a different pointer size and attach to Windows Service was broken (regression in 7.2)
  • Expansion popups in hot spots views were not hidden under some circumstances
  • IDE integration wizard for IntelliJ IDEA did not work for fresh IDE installations with no downloaded plugins installed
  • Mac OS X: When integrating Intellij IDEA from JProfiler, show the file chooser with the initial directory in ~/Library/Preferences

New in JProfiler 7.2 (Sep 28, 2012)

  • New features:
  • RMI probe
  • Web services probe
  • Offline profiling can be set up with the jpenable command line utility
  • URL request splitting in the call tree is now support for sampling as well
  • Heap walker: Compact incoming references in the heap walker for selected data structures such as linked lists
  • Heap walker: New inspections for class inheritance and class loading
  • Heap walker: Show method and thread information for incoming references from the stack
  • Heap walker: Cumulated incoming reference view shows percentages, counts and sizes based on the top-level row
  • Heap walker: Added a "Show unreferenced objects" action in the cumulated incoming references view
  • Heap walker: The "Duplicate strings" inspection now shows the string length instead of the shallow size
  • Heap walker: Less indeterminate progress information when taking a heap dump
  • Heap walker: If a class object is selected in the reference views, the "Use" menu now contains a "Use instances of selected java.lang.Class objects" entry
  • IDE plugin for eclipse 4.2
  • Support for directly loading gzipped HPROF snapshots
  • Command line arguments for jpenable and jpcontroller to connect to known pid and profiling port
  • Reliability improvements for the IBM JVM
  • 20% overhead reduction for instrumentation
  • View filters now support the wildcards * and ? also for packages
  • Probe telemetries with multiple lines are now shown as stacked area graphs by default with line graphs as an option
  • Dynamic memory views and heap walker classes view: Group classes by their name, showing the number of distinct classes in brackets
  • Monitor history is now reset when monitor recording is started. It's much easier to analyze use-cases that way.
  • Cross link action from monitor statistics view to monitor history view
  • Netbeans and IDEA integrations do not write into the installation directory of the IDE anymore
  • Integration wizards: Select 64-bit JVM by default or 32-bit if the current JVM is 32-bit
  • Heap walker, outgoing references view: The filter value dialog for character values now accepts strings instead of characters separated by semicolons
  • Integration wizard for eclipse Virgo 2.x and 3.x
  • Integration wizard for Apache Geronimo 3.x
  • Integration wizard for Oracle Weblogic 12c
  • Integration wizard for Coldfusion 10
  • Integration wizard for ObjectWeb Jonas 5.x
  • Bugs fixed:
  • In some situations, the hot spot views showed too few hot spots due to a percentual cutoff. Now, a minimum of 100 hot spots will be shown.
  • Do not use file extensions to determine the type of a snapshot (jps, hprof or gzipped hprof)
  • Call tree view: In some situations, the payload times could be inconsistent in snapshots
  • Class path browser and class selector progress dialogs could not be canceled
  • JRE search wizard in the general settings dialog was broken
  • Heap walker: After showing a path to a GC root in the "Incoming references" view, closing and re-opening nodes in that path could break the tree
  • jpintegrate did not ask if the profiled JVM was 64-bit or not, so the modifications were always for 32-bit JVMs
  • Heap walker reference views: CSV export did not work if a "more instances" node was present
  • Support both hard-float and soft-float version of Linux ARM
  • Quick attach did not work with OpenJDK on Mac OS X
  • IDE integrations on Mac OS X did not work if OpenJDK 7 was the default JDK
  • Offline mode in integration wizards was broken (regression in 6.2)
  • Some probe events from completely unprofiled call stacks were not shown in the probe hotspots view
  • When applying new profiling settings, IDE source code navigation was lost
  • String inspections did not work when profiling an OpenJDK JVM on Mac OS X
  • Could not select config directories of IDEA and Netbeans on Linux/Unix and Mac OS X when performing IDE integrations
  • Fixed VerifyError on IBM 1.7 with object serialization

New in JProfiler 7.1 (Jan 27, 2012)

  • New features:
  • JPA/Hibernate probe with support for Hibernate 3.x, Hibernate 4.x, EclipseLink 2.3+ and OpenJPA 2.1+
  • Probe tracker for tracking selected hot spots or control objects over time
  • Context menu in views with a call tree view now has an "Add Filter From Selection" action that offers a number of actions to modify the current filters based on the current selection
  • Ignored methods tab of the filter settings: It is now possible to select all methods of a selected class
  • Added trigger actions for starting and stopping probe recording
  • Groovy call site methods are now ignored by default
  • "Servlet" probe: Added a check box in the servlet probe config for switching off URL splitting in the call tree
  • Bundled plugin for IntelliJ IDEA 11
  • Bugs fixed:
  • JDBC probe: Batch execution parameters in the probe event view showed the data of the last addBatch call for all rows
  • JDBC probe: Always show physical connections. This eliminates a potentially large number of connection wrappers that are often unused.
  • Servlet probe: URLs from filter chains were not recorded
  • Entries in the hot spots view could be shown as "null" after using view filters or restarting recording
  • When using JRE 7 for the JProfiler GUI, an exception could be thrown when calculating allocation hot spot comparisons
  • Probe control objects view: Expanded tables with nested properties were not preserved correctly when new control objects were added to the view
  • Call tree view: exported XML files could be corrupted
  • Profiling settings: On the "Probes & JEE" tab, the ""Record exact payload call stacks in sampling mode" could not be changed
  • Probe events and control objects views: Event filter was not persistent when the probe view was changed

New in JProfiler 7.0 (Jul 22, 2011)

  • New features:
  • Probes for JDBC, JMS, JNDI, servlets, files, sockets and processes
  • Custom probes with API and direct configuration in the JProfiler GUI
  • Request tracking in the call tree view for executors, AWT, SWT and thread start
  • Inspections view in the heap walker
  • Primitive value and script filters in the outgoing references view of the heap walker
  • Action for displaying the toString() values of objects in several heap walker views
  • Redesigned references and graph views in the heap walker
  • History in the call tree view
  • Analyze long-running AWT events in the call tree
  • "Run script" trigger action with direct script entry in JProfiler
  • Show thread group names in thread history view
  • Total line and column filters in the monitor history view
  • Thread creation is now recorded in attach mode
  • The Netbeans integration now runs JProfiler standalone to support mixed 32-bit and 64-bit installations
  • New "JDBC demo" session
  • Integration wizard for Websphere 8
  • Bugs fixed:
  • The SWT method Display.sleep was not added to the waiting state
  • Small heap dumps are now analyzed much faster
  • Fixes for instabilities with JRockit and IBM JVMs
  • When profiling Websphere, the net I/O thread state did not include some IBM-specific methods

New in JProfiler 6.2 (Feb 14, 2011)

  • New features:
  • New profiling mode: Attach JProfiler GUI to running JVMs, also from IDE integrations
  • Enable remote profiling for running JVMs with the new jpenable command line utility
  • A command line controller for profiled JVMs is provided with the new jpcontroller command line utility
  • Improved filter selection in the session settings dialog
  • Heap walker: The application hot spots view now shows back traces
  • Improved behavior and progress feedback when connecting to a server that was integrated with the "startup immediately" mode
  • Display calendar time in bookmarks dialog and in the status bar for views with a time axis
  • Display calendar time in status bar for snapshots (only for snapshots saved with 6.2 and higher)
  • Profiling OSGI applications is now possible without having to modify OSGI properties for boot delegation
  • Integration wizard for Tomcat 7.x
  • Integration wizard for JBoss 7.x
  • Bugs fixed:
  • Ignored methods in the filter settings did not work with unfiltered methods
  • When changing profiling settings with different filters, a lot less classes are newly instrumented now
  • Fixed problems when changing profiling settings from instrumentation to sampling
  • Not all park methods in LockSupport were attributed to the wait state
  • Deleting elements with the keyboard in the call tracer always deleted two rows
  • Fixed NPE in the heap walker
  • Canceling operation in the heap walker did not work correctly

New in JProfiler 6.1.4 (Jan 25, 2011)

  • Bugs fixed:
  • Working directory setting for local sessions was ignored (regression in 6.1.2)
  • In rare cases, entries in the call tree were in the wrong position (regression in 6.1)

New in JProfiler 6.1.3 (Jan 18, 2011)

  • JProfiler could hang at startup without valid license (regression in 6.1.2)
  • On Linux, long expansion popups in the hot spot view could crash the JProfiler GUI process when compiz was enabled

New in JProfiler 6.1.2 (Jan 5, 2011)

  • New features:
  • Heap walker: XML export for biggest objects view, the cumulated reference views and the reference tree views
  • Heap walker: Improved the selection step display for reference selections
  • Heap walker: Selection steps can be exported as an XML file. The creation of this file can be enabled in the export file chooser.
  • "Hot spots" and "Allocation hot spots" views: Added an "expand entire tree" option in the export file chooser
  • Bugs fixed:
  • Showing a monitor object in the heap walker from the monitor views threw an exception (regression in 6.1)
  • Web start profiling did not work with recent JREs
  • Web start session configuration: The dialog showing cached JNLP URLs was always empty on Windows Vista and higher
  • When the first profiling settings template was saved and the general settings dialog was opened, it was always selected as the default for new sessions
  • A method graph with multiple initially selected methods was not centered correctly
  • The event count for non-runnable states was sometimes wrong for Thread.sleep
  • The "earlier calls" call tree node for recorded annotations (JDBC calls, etc.) was missing in snapshots
  • For very short-running CPU or allocation recordings using the API in a live session, the CPU and allocation views remained in the "no recorded data" state
  • "Allocation hot spots" view: The "Show in heap walker" action showed the tree map and not the hot spots in the heap walker
  • Trigger interceptors could not add payload to the call tree when no interception provider was specified as a system property
  • In the class selection dialog (e.g. in the allocation views), there was a top-level entry named "java/lang/Thread"
  • Heap walker: "Use items in selected collection" action did not work for maps and linked lists
  • Heap walker: The "unrecorded objects" value in the time view was wrong
  • Heap walker: The resolution of exported data in the time view was too coarse
  • Heap walker: Could not zoom in far enough in the time view
  • In rare cases when using view filters, there could be additional annotations in the call tree when switching the aggregation level
  • "Hot spots" view: For non-method hot spots, the XML export was missing the hot spot values
  • The event count in the method graph for non-runnable states was wrong for recursive methods
  • The call tracer export button in the tool bar was never enabled
  • Internal calls to __jprofiler_nmp_sleep were shown in the call tree when sampling was used
  • The annotation hotspot counts were sometimes wrong when sampling was used
  • Monitor history graph: When profiling a 64-bit JVM, the owning nodes were not always shown
  • Call tracer: The displayed stack trace could be wrong for restarted traces
  • Fixed a rare offline snapshot corruption
  • Opening a snapshot while the call tracer view was active could lead to an error
  • URL entries could be on top-level instead of the correct position in the call tree when profiling a 64-bit JVM

New in JProfiler 6.1.1 (Nov 11, 2010)

  • Bugs fixed:
  • Several integration wizards on Unix did not work anymore (regression in 6.1)
  • Heap walker incoming reference tree view: Some paths to GC root were not merged correctly (regression in 6.1)
  • Heap walker allocations view: unrecorded objects node was labeled as filtered classes nodes
  • Fixed undefined behavior when loading snapshots from a newer version of JProfiler

New in JProfiler 6.1 (Oct 22, 2010)

  • New features:
  • Full support for Java 7
  • Much better support for loading extremely large snapshots
  • Heap analysis is now stored for future use
  • Support for debugging and profiling at the same time
  • Creation of archives with the profiling libraries for remote platforms
  • Improved handling of the choice between sampling and instrumentation
  • Snapshots that have an uncompressed size of more than 2 GB can now be opened on 64-bit Windows
  • Heap analysis options can be set when opening a snapshot
  • Improved installer with streamlined installation and downloadable profiling libraries for other platforms
  • Support for IDEA X (current EAP build)
  • Support for Netbeans 6.9
  • Bugs fixed:
  • Snapshot comparisons: The heap dump was always loaded for non-offline snapshots even if it was not required for the comparison
  • Snapshot are saved more reliably when the heap of the profiled JVM is maxed out

New in JProfiler 6.0.6 (Aug 11, 2010)

  • Full support for eclipse 3.6

New in JProfiler 6.0 (Nov 14, 2009)

  • Locking graphs. The monitor analysis in JProfiler was extended with graphs that show the current locking situation and the history of all recorded locking situations. All views that concern monitor analysis are now in their own "Monitor views" section. The current locking graph view shows all threads that are currently waiting or blocking on a monitor as well as those that hold a contended monitor. Deadlocks are are visualized with red nodes. Tool tips show times and stack traces.
  • In the locking history graph you can record monitor events and navigate step by step through the recorded locking situations. A time line view at the bottom puts the distribution of events into context and provides an alternative way of navigating to other monitor events.
  • Since there can be a large amount of monitor events, you can mark certain threads or monitors as nodes of interest. A separate set of navigation buttons will then only step through events that involve at least one node of interest.
  • Monitor events can be cumulated by selecting a region in the time line with the mouse. Total blocking and waiting times as well as lists of stack traces are visible in the tool tip windows for the arrows in the locking graph.
  • Monitor events are now recorded on demand. Previously monitor events were always recorded which created unnecessary overhead in some cases. Monitor recording can be started in the locking history graph and the monitor history view. Also, there are new trigger actions to start and stop monitor recordings. Note the configurable thresholds for monitor events.
  • Monitor views are now linked with the heap walker. When analyzing a monitor in the monitor views, it is now possible to show the monitor object in the heap walker, so that you can analyze where it was allocated and how it is referenced. In the locking graphs, you can right-click a monitor node and switch to the heap walker.
  • The same thing works in the monitor history view. Also, any monitor event in the monitor history view now offers a link to the locking history graph in the context menu.
  • In the thread history view, there are now tool tips with stack traces that also include links into the monitor views. These tooltips are available if monitors have been recorded for the time under the mouse cursor.
  • A thread dumps view has been added. Thread dumps show all call frames, not only profiled classes. Multiple thread dumps are supported. You can stay on the same thread and cycle through different thread dumps to see changes in the stack trace. Single threads or the entire thread dump can be copied to the clipboard.
  • Thread dumps can also be taken with the new "Trigger thread dump" trigger action, the JProfiler MBean or via the Controller API.
  • The new method statistics view shows statistical data on the distribution of method execution times. Most interesting is the "outlier coefficient" that shows how strongly the slowest invocation deviates from the median time. In the lower part of the view, a graph shows the distribution of call times. Here, the y-axis has been set to a logarithmic display in order to show single outliers more clearly.
  • Methods with prominent outliers can be further analyzed with the new "exceptional methods" feature explained below. You can right-click any method in the table and choose "Add as exceptional method" from the context menu.
  • Exceptional method runs are the invocations of a method that take most time. Often, a method performs very similarly over a huge number of invocations, but sometimes it takes much longer. Looking at the call tree does not help in this case, since the regular invocations dominate the single slow invocation. With JProfiler 6, you can mark a method as an exceptional method in the call tree views or the method statistics view and the call tree will show the slowest invocations separately.
  • Tree map view modes have been added to all views that show call trees. The areas of the rectangles in the tree map are proportional to inherent time and there is a cutoff for maximum nesting depth. You can mouse over rectangles to see the method information and zoom in to see a certain region in more detail.
  • The biggest objects view in the heap walker has also received a tree map view mode. The areas of the rectangles are proportional to the retained size of the objects.
  • Stack trace information for the call tracer has been added. At each trace in the call tracer, you can see the current stack trace in the lower window. This makes it much easier to assess the context of the selected trace.
  • Expanding call trees is now more configurable. Instead of the old "Expand 10 level" action, an "Expand multiple levels" action has been added where the number of levels is now configurable. In addition, a threshold can be defined that prevents insignificant nodes from being expanded.
  • New profiling settings can now be applied without restarting the JVM if you profile a 1.6+ JVM. This applies to all available options in the profiling settings, the filter settings and the trigger configuration.
  • This also means that when profiling a remote application server that should start up immediately without waiting for a connection from the JProfiler GUI, you do not have to transfer a config file to the remote server and specify it on the command line anymore. This simplifies remote profiling considerably.
  • Manual configuration of profiling has been simplified if you profile a 1.5+ JVM. Instead of the -agentlib VM parameter, a boot class path VM parameter and the modification of the native library path environment variable, you now simply specify a single JVM parameter and no other modifications are required. On Windows, with JProfiler installed in C:Program Filesjprofiler6, the VM parameter is -agentpath:C:Program Filesjprofiler6inwindowsjprofilerti.dll=port=8849
  • Any remote session configured for port 8849 can now connect to the profiled JVM.
  • Usually, you will use an integration wizard to insert the VM parameter for profiling into your start script, or use an IDE integration to start profiling without any configuration. However, sometimes it is convenient to make changes manually. In that case, it is now much simpler to set up profiling than before.
  • Auto-tuning for dynamic instrumentation determines methods with disproportional overhead and suggests them for exclusion in the JProfiler GUI. Very short-running methods that are called very frequently can distort the overall numbers, because the time required to measure those methods takes much longer than the actual method itself. An example of such a method is the method in an XML parser that reads the next character. During profiling, you are notified of such overhead hot spots in the status bar.
  • By clicking on that notification or when the session is terminated, a dialog is shown that shows you the overhead hot spots and lets you add them to the list of ignored methods with one click. For your next profiling session, these methods will not distort overall numbers anymore.
  • Ignored method configurations can be reviewed and deleted in the filter settings.
  • The behavior of auto-tuning is configured with two parameters in the profiling settings. Auto-tuning can also be completely disabled for a session.
  • JProfiler snapshots can now by opened from IDE integrations. The main advantage is that you get source code navigation in the IDE for a snapshot that way.

New in JProfiler 5.2.1 (Jan 29, 2009)

  • New features:
  • Added a view setting to switch off display of declaring classes for the reference trees in the heap walker
  • Heap walker, tree of incoming references: Show declaring classes if different from actual class
  • Heap walker, reference graph: Improved tooltip display and show declaring classes if different from actual class
  • Bugs fixed:
  • Taking a heap snapshot could fail under some circumstances with an ArrayIndexOutOfBoundsException
  • Heap walker, tree of incoming references: It was possible to invoke "Show paths to GC root" on GC root nodes themselves with confusing results
  • Heap walker, tree of incoming references: Multiple selection did not always work as expected
  • Heap walker, tree of incoming references: Object IDs were shown for GC roots
  • Heap walker, reference graph: Multiple references from fields with the same name in superclasses were not displayed
  • Heap walker: Deep size and retained size for the current object set were shown in a confusing order
  • Heap walker: Selection steps were initially not shown even if selected in the view settings
  • Payload descriptions (e.g. JDBC statements) with a size of more than 64kB caused an exception to be thrown in the profiled JVM
  • Tooltips in graphs are now shown immediately and are not hidden after a few seconds

New in JProfiler 5.1.4 (Jun 26, 2008)

  • Under some circumstances, the trigger configuration could not be loaded anymore after multiple triggers had been defined for a session.