New features:
- Support for MongoDB 5.â2
- Support for Spring WebFlux client 6.â1.14+
- Support for ktor 3
- Prevent native agent warning for Java 24+
Bug fixes:
- Regression in JProfiler 14.â0.3: Remote attach to a Docker container with a user switch via sudo did not work anymore
- Fixed remote attach to Docker containers with a different architecture for certain situations
New features:
- Full support for profiling Java 23. This update is required if you profile virtual threads or perform async sampling.
- Added support for Hibernate 6.â6
Bug fixes:
- Virtual thread profiling was broken on recent OpenJ9 JVMs
New features:
- Security change: If the "address" option is not specified for the -agentpath parameter, the JProfiler agent will only listen on the loopback interface
- Security change: By default, the command line utility jpenable will now prepare a JVM for profiling in such a way that only local connections are allowed. jpenable has a new -a option to specify a listening address instead.
- Security change: Integration wizards will no longer suggest to configure unencrypted direct TCP connections to remote machines but use SSH connections by default
- Security change: The default connection type of a new profiling session is now "Local TCP connection". The old remote TCP connection is discouraged but is still available with the "Unsecured TCP connection" connection type.
- Improved the ability to open truncated HPROF files
Bug fixes:
- Connecting to a Docker or Kubernetes container did not work if the home directory was mounted with the "noexec" option
- When connecting to Kubernetes containers, JProfiler used to query containers in all namespaces, which could take a very long time. Now, only namespaces that are opened in the tree are queried.
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
Bug fixes:
- 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 features:
- Preliminary support for profiling the current Java 22 builds
- Support for MongoDB 5.â0.0-beta0
Bug fixes:
- 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 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 a 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
Bug fixes:
- 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 features:
- Support for Hibernate 6.â2.3+
- Support for MongoDB 4.â10
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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 features:
- Added support for Netty 4.â1.81+
- Added support for RESTEasy 6.â2+
Bug fixes:
- 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 features:
- Support for profiling Java 19
- JavaScript XHR origin tracking now supports Chrome 104+
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- io.ânetty.âchannel.âepoll.âNative.âepollWait was not added to the Net I/âO thread state
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
Bug fixes:
- 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 the 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 features:
- eclipse integration: Support for Bndtools launch delegates
Bug fixes:
- 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 features:
- jpenable, jpdump and jpcontroller now also work with Java 12 and higher. They continue to work down to Java 1.â6.
Bug fixes:
- Telemetries with area graphs could be broken when data was consolidated
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
Bug fixes:
- 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
Bug fixes:
- Regression in 11.â0: Limited timers with count 1 did not work for offline profiling
- Linux/âUnix: The JProfiler UI could not be started with Java 8u242 because of an NPE that was thrown at startup
- macOS: The jpexport command line utility threw a HeadlessException when run with a non-Jetbrains-JRE
- Quick attach: When using the filter text field, the wrong process was attached to
- Expansion tool popups for long items in lists, trees and tables only worked on the primary monitor
- Fixed an obfuscation problem with the profiling platform that prevented native library loading
- The sample for the profiling platform had missing dependencies
- The JProfiler samples could not be started from the command line in read-only locations, such as in the directory created by the Windows installer
New 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
Bug fixes:
- 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 features:
- Full support for Hibernate 5.â3 and 5.â4
- Help and Javadoc are now shown online, because local help files do not work with some modern browsers anymore
Bug fixes:
- Regression in 11.â0: Pressing the left key did not collapse nodes in trees anymore
- Memory telemetry: "Compressed Class Space" is now subtracted from the "Metaspace" pool and shown as "Metaspace (non-class)â", so the non-heap pools are added up correctly
- Fixed a problem where probe data in a snapshot could not be read
- Fixed a problem with sorting probe hot spots
- Call stacks were not shown in the probe events view for deferred events
New 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
- Linux/âUnix installer now creates file associations
- Notarized binary for macOS
- Improved error handling for truncated HPROF snapshots
Bug fixes:
- The Windows ZIP archives did not have HiDPI enabled
- The JProfiler UI did not have per-monitor DPI awareness
- Fixed various UI problems with fractional HiDPI
- Attach mode did not work on Linux ARM
- Working directory was changed when profiling with the NetBeans plugin
- HTTP probe: With the Java 11 HTTP client, recorded times of error events for async connections could be wrong
- The time axis for the probe telemetries had a wrong offset in some scenarios
- Probes: The control objects view did not have a "Show row details" action
New 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
- The HTTP Server probe now support Jetty 12.âx generic handlers
Bug fixes:
- 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 heap walker after using the heap walker 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
Bug fixes:
- 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 features:
- Support for profiling OpenJ9 JVMs for Java 9+
Bug fixes:
- 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 features:
- Support for MongoDB 3.â8
Bug fixes:
- 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 different versions where the superclass/âsubclass 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
Bug fixes:
- 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 features:
- Attaching to a running JVM for the first time is now more than 5 times faster
- Support for MongoDB 3.â7
Bug fixes:
- 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 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
Bug fixes:
- Heap walker: The path to GC root search did not prefer the 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
Bug fixes:
- 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 features:
- jpcontroller: When saving a snapshot, print the absolute path where the snapshot has been saved on the remote machine
Bug fixes:
- 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 features:
- Added a keyboard shortcut for the "Show source" actions
Bug fixes:
- 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 features:
- IDEA integration: Profiling gradle run configurations is possible starting with 2017.â2 builds
Bug fixes:
- 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 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 baseline 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
Bug fixes:
- 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 the 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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 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
Bug fixes:
- 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 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 quick search, enabled by default
Bug fixes:
- 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 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
Bug fixes:
- JDBC probe: For Postgres, prepared statement execution was not recorded
- Web service probe: Not all web service calls were tracked, for example, when they were made from Weblogic
- Probe telemetry comparison did not work if stacked telemetries were recorded (e.âg. JPA/âHibernate)
- Probe tracker did not work for formatted hot spots (for example JPA/âHibernate)
- In snapshots, only the first activated probe displayed probe telemetry or probe tracking data
- If instrumentation recording was started while a thread was inside a lambda, the call tree was corrupted
- eclipse 4.â5 integration did not work on Mac OS X
New features:
- Support for eclipse 4.â5
Bug fixes:
- 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
Bug fixes:
- 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 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
Bug fixes:
- 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 features:
- Bundled integration for IntelliJ IDEA 14.â1 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
Bug fixes:
- 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 features:
- Heap walker: Reduced memory usage for the analysis of HPROF heap dumps
- Heap walker: Opening heap dumps is now 5-25% faster
Bug fixes:
- 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 features:
- Bundled integration for IntelliJ IDEA 14 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
Bug fixes:
- A very large number 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 features:
- Added integration wizards for Tomcat 8.âx, Coldfusion 11, Glassfish v4, WildFly 8.â1 and Jetty 9.âx
Bug fixes:
- 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 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
Bug fixes:
- 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
Bug fixes:
- Attaching to a Java 8 JVM could crash the profiled process
- Heap Walker: The UI could hang in the cumulated incoming references for some hash map and linked list content
New features:
- Profiling platform: Added a version of ConnectionFactory#âcreateRemoteConnection that makes it possible to connect to an unconfigured profiling agent
- Profiling platform: Added Connection#ârecordPayload to start probe recording
Bug fixes:
- Regression in 8.â0.2: JProfiler could no longer install the helper service for attaching to Windows services
- The balloon tool tip in the status bar was sometimes not cleared
- The view settings in the thread monitor view were not used for the command line export
- Thread monitor view: The "End time" column was shown twice when dead threads were displayed
- Fixed a crash when using the quick-attach functionality on Solaris SPARC with 64-bit JVMs
- Profiling platform: Waiting and blocking states were not recorded correctly when using the profiling platform API with instrumentation
Bug fixes:
- Regression in 8.â0: Some classes could be missing in a live heap dump
- When the session configuration had a very large class path, snapshots could not be saved from the GUI
- "Stop recordings" action could be enabled in snapshots
- Mac OS X: IDE integrations always opened JProfiler with Java 6
- Using multiple trigger actions of the same type for the same trigger caused display problems in the configuration UI
- When loading a snapshot, data in probe views that was already viewed in live mode was not loaded again
Bug fixes:
- Fixed a java.âlang.âNoSuchMethodError when using OpenJDK for the JProfiler GUI
- Netbeans IDE integration: The initial folder chooser for selecting the installed Netbeans 7+ version opened in an incorrect location
- Using a session of type "Select from local JVMs" for offline profiling caused some views to be disabled
New features:
- Bundled integration for IntelliJ IDEA 13 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
Bug fixes:
- Fixed problems when reading incorrect stack map tables generated by external byte code modifications
New features:
- If the system property "jprofiler.âdisplayName" is set the profiled JVM, it is used in the list of locally detected JVMs
Bug fixes:
- 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
Bug fixes:
- 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 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
Bug fixes:
- 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 features:
- Bundled integration for IntelliJ IDEA 12.â1 (the newest IDEA plugin is always available in time from the IDEA plugin manager)
- Generic WTP integration for the eclipse 3.â6 and 3.â7 IDE integrations
Bug fixes:
- Integration wizard produced wrong VM parameter for IBM JVMs on Solaris
- Fixed a VerifyError in conjunction with AspectJ
- When consolidating probe events, prefer to keep open and close events since they are usually more interesting
- Fixed hanging after the output "Native library initialized" that could happen when other Java agents where present
- Fixed a problem with proxy classes having a different package name in recent Java releases
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)
Bug fixes:
- Platform API was partially broken (regression in 7.â2)
- Monitor history and locking history graph: If a very large number 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
Bug fixes:
- 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 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
Bug fixes:
- 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
- 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
Bug fixes:
- Direct usage of Unsafe.âpark was recorded in the "Runnable" thread state instead of in the "Waiting" thread state
- Reduced the overhead of request tracking
- Sampling without filters could show some calls made by the JProfiler agent
- Fixed problems with the file probe on the IBM JVM
- Thread.âsleep(â) was not always accounted to the "Waiting" state in attach mode
- Invokedynamic constant pool entries could crash the JVM
- The Net I/âO thread state was sometimes not recorded correctly with dynamic instrumentation
- When a method waited during reconnection it was always recorded in the "Runnable" thread state if sampling was used
- Fixed crash for classes with irregular constant pool entries generated by JBoss
- Could not use command line export for probes registered with a ProbeProvider
- If estimated CPU times were recorded, the "Runnable" times of payloads were not set
New features:
- The bundled IDEA plugin now supports IDEA 11.â1
- Integration wizards for Jetty 7.âx and 8.âx
- Integration wizard for Caucho Resin 4.â0
Bug fixes:
- Changing the thread selection in the CPU "Hot spots" view could break the view
- Fixed problem with heap dumps that did not contain all objects (mostly in attach mode)
- Fixed NPEs in call tracer and probe events views
- Fixed problem with the IBM Java 7 verifier
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 checkbox in the servlet probe config for switching off URL splitting in the call tree
- Bundled plugin for IntelliJ IDEA 11
Bug fixes:
- 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 features:
- Support for profiling on Linux ARM
- The JProfiler GUI can now run with a Java 7 JRE (Note: profiling Java 7 has been supported for a long time)
- Added "Freeze view" actions for "All objects" and "Recorded objects" views
Bug fixes:
- Changing request tracking types in the startup dialog did not save the session, so the changes were not persistent sometimes
- When moving back in the heap walker history, some controls in the references views were disabled (regression in 7.â0)
- "Go to start" action in the heap walker did not hide the group table at the top if the current object set was created by an inspection
- Code completion in script editor: No parameter names were shown for JProfiler API classes
- When using the "Add method trigger" action in the call tree to create a trigger with script actions, the scripts were not compiled immediately, so those script actions would have no effect until the next restart
- Using the "Set root" action in the call tree multiple times did not work for snapshots
- The HTML export of the CPU hot spot view could have empty backtraces under some circumstances
- Profiling on Windows 2000 was broken
- Object comparison: Creating an allocation tree or an allocation hotspot comparison from the selection was broken
- Fixed a rare UTFDataFormatException
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
Bug fixes:
- 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 features:
- Added the option "address=â[IP address]" for the -agentpath VM parameter to select a particular network interface for the profiling agent
- Bundled JProfiler plugin for IntelliJ IDEA 10.â5
Bug fixes:
- Fixed crash when instrumenting classes whose constant pool was nearly full
- Fixed illegal exception table problem when instrumenting certain Scala class files
- All locally detected JREs were reported with the vendor "Sun" (Regression in 6.â1)
- The bundled JRE in the Windows installers did not work with some languages
- No expansion popups were shown for long thread names in the thread history view any more (regression in 6.â1.2)
- Quick attach dialog: When searching for JVMs was slow due to hanging or damaged JVMs, the dialog would be very sluggish
- Cancelling profiling sessions from IDE integrations did not kill the started process any more (regression in 6.â2)
New features:
- Support for loading native Android HPROF heap dumps
Bug fixes:
- Java 6u25 broke several features in JProfiler
- Fixed a crash that could occur when applying new profiling settings (regression in 6.â2)
- The "Startup immediately, connect with JProfiler later" mode could crash at startup with java 1.â5
- View filters in call trees did not work correctly any more (regression in 6.â2)
- Fixed a crash when loading certain snapshots
- Old threads and bookmarks were not cleared when applying new profiling settings. This could lead to errors in the JProfiler GUI.
- The time axis of VM telemetries did not start at zero when profiling Java 1.â4 and 1.â5
- Fixed loading of converted Android HPROF heap dumps
- Linux: Workaround for the "sun.âawt.âX11.âXException: Cannot write XdndAware" exception on Ubuntu and Suse Linux when using a 1.â6.0_â21+ Oracle JRE to start the JProfiler GUI
Bug fixes:
- Profiling with recent Java 7 builds did not work anymore
- Fixed a deadlock when JProfiler was used together with some Java agents
- In attach mode, some classes in the heap walker had wrong fields
- In the heap walker, after calculating the retained size for a data size, the iteration through objects in the reference and data views could be broken
- Only one implemented interface was shown in the outgoing reference tree of the heap walker
- Idea 9.âx integration: Attach action did not work.
Bug fixes:
- Fixed several classloader-related regressions in 6.â2.
- Fixed NPE when loading certain HPROF snapshots
- JDBC recording did not work with sampling (regression in 6.â2)
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
Bug fixes:
- Ignored methods in the filter settings did not work with unfiltered methods
- When changing profiling settings with different filters, a lot smaller number of classes is 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
Bug fixes:
- 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)
- "nowait" mode without initial configuration hung at startup (regression in 6.â1.2)
Bug fixes:
- JProfiler could hang at startup without a 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 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
Bug fixes:
- 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 (for example 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
Bug fixes:
- Several integration wizards on Unix did not work any more (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 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
Bug fixes:
- 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 features:
- Full support for eclipse 3.â6
Bug fixes:
- Some usages of LockSupport.âpark were recorded as runnable
- Fixed loading of some snapshot files from JProfiler 5.â1 and earlier
New features:
- Heap walker: "Purging index" phase is now much faster
- Bundled IntelliJ IDEA plugin now supports IDEA 9.â0.2
Bug fixes:
- Thread dumps in offline snapshots were not loaded in the JProfiler GUI
- Fixed loading of some snapshot files
Bug fixes:
- Opening large snapshots (> 2-3 GB) could result in using up all disk space
- Data from the locking history graph and the monitor history view that was already visible in the JProfiler GUI at the time of saving was not shown in snapshots
- Wrong tooltip was displayed for snapshots in the threads history view if no monitors were recorded for a particular thread and time
- In the telemetry views, it was sometimes possible to zoom in from the initial zoom level, but not to zoom out again
- The main thread was not recorded on BEA JRockit JVMs
Bug fixes:
- The IDEA 9.â0 integration did not work with the final release of IDEA 9.â0
- Load session settings on startup for local sessions profiled with 1.â6+ configured with the "Start immediately" startup mode to avoid problems with retransforming a large number of classes
Bug fixes:
- NetBeans plugin did not work if JProfiler was installed in a path with spaces
- Source path could not be changed temporarily for a snapshot
- The native library path in a local session configuration was ignored for 1.â5+ JVMs
- Print an exception if the "Create an HRPOF heap dump" trigger action fails
New features:
- Current locking and locking history graphs
- Thread dumps view
- Method statistics view
- Exceptional method runs: Analyze the slowest executions of selected methods in detail
- "Tree map" view mode in all call tree views and the biggest objects view of the heap walker
- Auto-tuning for dynamic instrumentation: Methods with disproportional overhead will be suggested for a list of ignored methods
- Simplified manual configuration of profiling with a single -agentpath VM parameter for Java 5+
- Changing profiling settings without restarting the profiled JVM for Java 6+
- Loading snapshots from IDE integrations
- Support for FreeBSD x86 and Linux PPC
- Thread history view: Tool tips with stack traces and links to the monitor section
- Monitor history view: Integration with the new locking graphs
- Call tracer: Added stack trace context information
- Configurable levels and threshold for expansion in call trees
- "Select in heap walker" actions now also work with snapshots. In live sessions you will be asked whether to use the current heap dump or whether to take a new one
- Conditional recording of the monitor event history
- Profiling without waiting at startup (nowait mode) does not require a config file for Java 6+ anymore
- Minimum number of significant digits for data feed labels in VM telemetries
- New icon set for Windows Vista/âWindows 7 and all other non-Windows XP platforms
- Remember window sizes for JProfiler frames
- IDE integration for Netbeans 6.â8 with support for profiling Glassfish v3
- IDE integration for IntelliJ Idea 9
- Integration wizard for JBoss 5.â1
- Integration wizard for Glassfish v3
- Integration wizard for Coldfusion 9
- Integration wizard for Oracle Weblogic 11g
Bug fixes:
- Fixed exception in command line integration wizard
- Method trigger configuration: Browse in profiled classes did not work
- Fixed performance regression in the selection of the heap walker time view with JRE 1.â6 update 10 and higher
- IDE integrations: Deselecting the "Open new window" option did not always work
- Selecting primitive arrays in the heap walker from other views was not possible
- Fixed problem with repeated docking and undocking of profiling views
- Red markers for unprofiled classes in call tree views were sometimes incorrect
- Native console for local sessions did not work on Windows Vista and Windows 7
Bug fixes:
- Fixed a race condition that could lead to a deadlock in the profiled JVM
- Fixed a crash in the profiled JVM that could occur when the JVM terminated and the JProfiler GUI was not connected
- Fixed a crash in the heap walker related to internal reflection classes
New features:
- Support for eclipse 3.â5 in the IDE integration wizard
- Support for Netbeans 6.â7 in the IDE integration wizard
Bug fixes:
- Make it clear in the GUI that invocation counts for non-runnable thread states refer to thread state events and not to actual method invocations
- Method triggers on constructors did not work
- Object comparison: Reloaded classes with the same name contributed multiple rows with erratic numbers to the comparison
- Heap walker: The fallback for large snapshots did not always work
- Heap walker: Fixed a crash on Mac OS X when calculating deep sizes
- Heap walker: HPROF snapshots with multiple segments (for example Android snapshots) could not be loaded
- Certain old JProfiler snapshot files could not be loaded anymore
- Fixed a rare crash when profiling the IBM JVM
- Mac OS X: Thread name changes were not shown in the JProfiler GUI
New features:
- Added integration wizard for Netbeans RCP applications
Bug fixes:
- Fixed exception when scanning heap dump
- If small icons were chosen for the toolbar, it was not possible to reset the icon size without restarting JProfiler
- Fixed loading of very large snapshot files
- An exception was thrown at startup if a 1.â5+ JRE without java.âlang.âmanagement classes was used for profiling
- Fixed exception for JNDI profiling with some JNDI service providers
- Fixed NullPointerException when opening certain HPROF files
- Fixed ArrayIndexOutOfBoundException when loading snapshot
- Payloads larger than 64K lead to exception during profiling
- Install eclipse plugin in "dropins" folder for eclipse 3.â4
- Solved "Could not find an unused local port" problem for IDE integrations
- Web start sessions: "java-vm-args" attribute of the "j2se" element in the JNLP descriptor was ignored, so profiling did not work with 1.â6.0 update 10 and higher when this attribute was used
- Recorded objects and recorded throughput telemetries were always disabled for snapshots
- Command line export: -liveness option was not respected for RecordedObjectsView
- Mac OS X: Applet profiling instructions given by the wizard were wrong
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
Bug fixes:
- 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 (for example 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 features:
- Much lower memory overhead on the profiled JVM when taking a heap snapshot
- Much lower memory overhead when opening snapshots with heap dumps or HPROF snapshots
- Much lower memory overhead when opening snapshots with lots of CPU data (for snapshots saved with 5.â2+)
- CPU data of dead threads is now stored to disk periodically to decrease the memory overhead on the profiled JVM
- Added "JVM startup" and "JVM exit" triggers
- Enabling and disabling triggers from the GUI and the API
- Trigger groups that can be enabled or disabled together
- Trigger action and API for controlling the call tracer
- "Trigger heap dump" trigger action now also works in online mode
- Method trigger: Added "ignore recursive calls" option, enabled by default
- Status indicators and quick switches for allocation recording, memory recording and trigger execution in the status bar
- "Edit bookmarks" dialog to show, edit and export all bookmarks
- Export bookmarks from the command line by specifying the "Bookmarks" as the view name
- Line style and color of bookmarks can be edited
- Heap walker, time view: Added a "Select between bookmarks" action to select all objects allocated between two bookmarks.
- Session import and export
- Command line integration wizard ($JPROFILER_âHOME/âbin/âjpintegrate)
- View filters for snapshot comparison views
- Hiding of selected nodes in call tree and hot spot views
- Support for HP-UX on Itanium
- Bundled IDE integrations for IDEA 8, JDeveloper 11g and Netbeans 6.â5
- Better user experience for slow operations in the heap walker
- Better resize behavior of table columns
- The difference columns in the "All objects", "Recorded objects" and "Allocation hot spots" views now show percentages as well. A view setting for switching between sort by value and sort by percentage has been added.
- Command line export: Added parameter -viewfilters=â[comma-separated list] for both export and comparisons to apply view filters to the exported view
- Hidden messages can be enabled again on the "Miscellaneous" tab of the general settings dialog
- Added "Do not show again" option for several messages
- Integration wizard for Apache jsvc services
- All integration wizards now support offline profiling
- JDBC calls and other payload nodes in the call tree now show average times in brackets if this was selected in the view settings
- Call graph: Added a "Remove all but selected nodes" action to the context menu
- Allocation views: Added option to auto-update data periodically
- Added menu item Session â Close Session to revert a window to its original state
- Snapshot comparisons: The object comparison now has an option to compare objects in heap snapshot. In that way, HPROF heap snapshots can be compared as well.
- Support for web start sessions on Mac OS X
- Integration wizard for Websphere 7.â0
- Integration wizard for IBM Websphere community edition 2.âx
- Integration wizard for Jetty 6.âx
- Integration wizard for the Tanuki service wrapper
- Integration wizard for Coldfusion 8
- Integration wizard for Glassfish v3
- Support for the IBM 1.â6 JVM
Bug fixes:
- Quick search feedback in table views was broken under some circumstances
- JDBC calls and other payload nodes in the call tree did not fully respect time scale settings in the view settings
- Threads were not sorted alphabetically in the thread selector of the CPU views
- Bookmarks created with the API were sometimes not transmitted immediately
- When modifying trigger settings, the config file was not updated after closing the session settings dialog
- Call tree comparison: When reloaded classes with the same name contributed to the same call stack, the comparison was faulty at that node
- Remote integration wizard: If the installation directory of JProfiler on the remote machine was specified with a trailing file separator, the modification instructions were wrong or the integration failed.
- Call tree view: "Show all" action after "Set as root" action did not always work correctly.
- Web start sessions: The chooser button for JNLP URLs in the application settings did not show any results from a Java 6 installation (new cache format)â.
- Web start sessions did not work with Java 1.â6.0 update 10 and higher
- "Hot spots" view: For hot spot types other than methods, average times and invocation counts were not displayed if "Sampling" was selected as the method call recording type, even though this information is always available.
Bug fixes:
- Under some circumstances, the trigger configuration could not be loaded anymore after multiple triggers had been defined for a session
New features:
- Support for Mac OS X Java 6 DP9
- Support for Netbeans 6.â1
Bug fixes:
- HPROF dialogs were not correctly sized so that the OK button was sometimes clipped
- Fixed problems with Netbeans integration
- JProfiler MBean was garbage collected under certain circumstances
Bug fixes:
- The fix for "Instrumentation of some native methods" in 5.â1.1 lead to other VerifyErrors that are fixed in this release.
- Heap walker, reference view: the "tree of outgoing references" view mode did not show any data if strings with certain characters were among the outgoing references.
New features:
- Call graph: optional display of average times, configurable in the view settings
Bug fixes:
- NPE was thrown in JNDI interception if the parameters of a JNDI query were null
- Recorded allocation counts for objects created in native code was wrong
- HPROF options dialog was only displayed if the file name had an .hprof extension
- Hot Spots view: deselecting "Show average values in brackets" in the view settings broke the table layout
- Instrumentation of some native methods when profiling with Java 6+ produced a VerifyError
- Monitor usage statistics included monitors from VM internal finalizer thread
- Fixed race condition in the JProfiler GUI
- Fixed some display problems if the JProfiler GUI was run with Java 1.â4
New features:
- Tree views of incoming and outgoing references in the heap walker reference view
- Cumulated references as a tree table in the heap walker reference view
- Action to select all exclusively referenced objects in the heap walker reference view
- Type resolution of object arrays in memory views and heap walker when profiling with Java 5+ (JVMTI)
- Reworked internal source viewer with file structure display, syntax coloring and search
- Bundled IDE integration for IDEA 7
- IDE integration for eclipse 3.â4 (M2)
- IDE integration for Netbeans 6
- Added an option to remove unreferenced objects when loading HPROF snapshots
- Added a fixed summary row at the bottom of the All Objects and Recorded Objects views
- Added context menu in thread history view to switch to single threads in the call tree or hot spots view
- Average time is now a separate sortable column in the CPU hot spots view
- View and thread filters are now persistent on a per-session basis
- The main toolbar can now display icons with text or small icons
- External source viewer: source files which are contained in JAR files are now extracted to temporary files before the external viewer is invoked
- Added "Show Source" and "Show Bytecode" actions to stack trace lists in the thread monitor view, the monitor views and the allocation spot description in heap walker
- Added a context menu in object comparison to create allocation call tree and allocation hot spot comparisons for the selected class
- Session settings: if an executable JAR file is selected for profiling, the Class-Path manifest entry can be added to the class path automatically
- The "node details" dialog in all tree dialogs is now non-modal
- Added expansion popups in hot spot views
- View filters in hot spots views now support all hot spot types. Previously, only methods were supported.
- Selection step labels in the heap walker selection description are now hyperlinks to the first occurrence of the corresponding object set
- Heap walker reference view: Added view source and view bytecode actions to the cumulated reference views
- The "Record CPU data" and "Record allocation data" actions can now be invoked manually as well when there are triggers that start and stop recording
- Integration wizard for install4j/âexe4j projects
- Integration wizard for BEA Weblogic 10
- Integration wizard for JBoss 5
- Integration wizard for Apache Geronimo 2
- Integration wizard for Caucho Resin 3.â1
- API: added com.âjprofiler.âapi.âagent.âinterceptor.âPayloadInfo.âdiscardTime(â). This can be called if no timing information is desired for an interceptor type.
Bug fixes:
- Clicking on Auto-Update in the status bar in the class tracker did not retrieve new data
- Source viewer did not support secondary top-level classes with file scope
- Numbers next to the bar in the hot spot view could be cut off
- Table views in the heap walker did not have action for "Use selected objects"
- java.âlang.âClass was not present in the package aggregation level of the heap walker
- eclipse integration: source navigation to inner classes was broken
- Disconnecting and reconnecting to a remote JVM when dynamic views were frozen lead to inconsistent state in the GUI
- Fixed integer overflow in monitor usage statistics
- Classes with varargs-style main method could not be profiled
- Wrong units were used in the difference column of the object views when the primary measure was set to "shallow size"
Bug fixes:
- Data in call tracer and monitor history views was not saved to snapshots under some circumstances
- Uninstaller did not work when JProfiler was running with Java 1.â4
- eclipse 3.â1 integration: source navigation did not work for some project configurations
- Netbeans integration: fixed several GUI problems
- API samples did not work with floating licenses
- HPROF snapshots with a file extension other than .hprof could not be loaded
- Fixed a rare crash in the profiling agent
- The entry for "calls to filtered classes" is no longer shown in the CPU hot spots view
New features:
- Powerful triggers and actions
- Support for reading and writing HPROF memory snapshot files
- VM telemetries overhaul with additional VM telemetries
- Redesigned session settings
- Call tracer view
- eclipse integration: support for WTP launch configurations
- JProfiler MBean for controlling the profiling agent
- Native methods can be instrumented when profiling with Java 6+
- Primitive data types can be captured by heap snapshots when using Java 6+
- More flexible filter settings for method call recording
- Custom profiling settings templates
- Option to disable all filters when sampling is used
- eclipse integration: support for eclipse 3.â3M6
- eclipse integration: support for equinox launch configurations
- eclipse plugin is bundled as a feature
- Improved JVM search in setup wizard and general settings dialog ("Search common locations")
Bug fixes:
- Expanded the number of allowed interceptors to 32768. Previously, only 255 interceptors were usable.
Bug fixes:
- Fixed problems with "Show source" action for IDE integrations
- Improved wait thread state recognition for IBM VMs
- Fixed java.âutil.âconcurrent recording issues
- API: payload types for multiple interceptors of the same class were not unique
- API: fixed rare custom interceptor instrumentation issues
New features:
- Console and source viewer frames are excluded from modality when JProfiler runs with Java 6
Bug fixes:
- Webstart profiling did not work with Java 6 JRE
- Fixed z-order issues in JProfiler GUI with Java 6
- Library version mismatch detection was broken
- NPE for call tree comparisons with filtered call nodes
- Call tree comparisons with annotated JDBC/âJMS/âJNDI measurements were broken
- Fixed rare deadlock on Mac OS X
New features:
- Profiling platform with API for writing custom profilers and snapshot analyzers
- Interceptor API for injecting measurements, adding payload to the call tree and creating new hot spot types
- EJB 3 support
- Class tracker view
- Bundled IDE integration for IDEA 6.â0
- IDE integration for Netbeans 5.â5
- IDE integration for eclipse 3.â3 M3
- Thread name changes are now tracked and updated in the JProfiler GUI
- Action for highlighting the shortest path to the main node in the reference graph of the heap walker
- Action to use the selected java.âlang.âClass objects in the Classes view of the heap walker
- Option for CPU hot spot comparison to compare total call time or average call time
- Layouters for the Call Graph view
- IDEA integration: support for changing the JProfiler executable
- Netbeans integration: support for profiling external Sun Java System Application Servers
- Netbeans integration: snapshot comparisons are now accessible
- Netbeans integration: several smaller bug fixes and enhancements
- BEA Weblogic 9.â2 integration wizard
- Sun Java System Application Server 9 integration wizard
- Glassfish Application Server V1 and V2 integration wizards
- IBM Websphere 6.â1 integration wizard
- Apache Geronimo integration wizard
- Tomcat 6.âx integration wizard
- Backup config files in the Sun Java System Application Server and IBM Websphere integration wizards
Bug fixes:
- A StackOverflowError occurred if agent.âjar was not on the boot classpath, now a NoClassDefFoundError is thrown
- Integer overflow could occur for garbage collected class instance counts in very large heaps
- Server in the profiling agent was not robust enough, now it is possible to reconnect if the connection was broken due to a network error
- Fixed race condition when profiling with the IBM JVM
- java.âutil.âconcurrent support in the Threads section did not work with Java 1.â6
- Fixed a rare race condition that could lead to a crash at startup
- Console window was not removed from the window list when closed with the X button
- Live instance reference in the reference graph of the heap walker could be missing when not using the full GC option
- Hotspots could be missing in the CPU hot spot comparison if the hot spot was below the internal threshold in one of the snapshots
- Differencing in package aggregation level was broken
- "Hide calls" checkbox in call graph view settings was not persistent
- Method node selection dialog in call graph displayed wrong time unit
- Cross-platform console did not support overwriting current line with \r
- stack trace lists in threads section rendered J2EE components and URLs with internal class names
- thread name selector threw exception when entering some special characters
Bug fixes:
- eclipse integration: environment variable modifications were not correctly handled by the JProfiler plugin
- Snapshot comparisons: could not compare arrays in allocation tree and allocation hot spot comparison
- Session ID was not re-generated when copying a session
- Loading snapshots with 100,000s of threads could be very slow
- Workaround for corrupted snapshots
- Export ant task did not work with some JVMs
- Command line export: no default liveness type for allocation views
- Command line export: an exception was printed when exporting from a snapshot containing a heap snapshot
Bug fixes:
- Fixed wrong percentage values for very large total times in the hot spots view
- IDE integrations did not work on Solaris x86, HP-UX and AIX
- Library version mismatch detection was broken
- All objects view and recorded objects view: wrong column headers for snapshots where shallow size was selected as the primary measure
- All objects view and recorded objects view: wrong columns for class nodes in the package aggregation level when shallow size was selected as the primary measure
- command line export of allocation tree and hotspots: liveness type was ignored if no class or package selection was specified
New features:
- Support for AIX (AIX 5.â2/5.â3 on PPC)
- Support for HP-UX (HP-UX 11i on PA_âRISC)
- Support for Intel Macs
- Facility for comparing saved snapshots
- Command line export (and ant task) for saved snapshots
- Command line comparison (and ant task) for saved snapshots
- Class nodes in the reference graph of the heap walker
- Support for finding classloader-related memory leaks
- IDE integration for JDeveloper 10.â1.3
- IDE integration for IBM RAD 6.âx
- Thread monitor view: display creating thread as well as creation stack trace (JVMTI only)
- Monitor usage history view: display owner thread and its stack trace for blocking events (JVMTI only)
- Deadlock detection and monitor usage for the java.âutil.âconcurrent package
- Preserve context when switching aggregation level or thread status in any call tree view
- Option in the file chooser to export entire call trees rather than just the open nodes
- Option to open exported files is now in the file chooser and remembered separately for each export format
- Time and size display is now configurable in the view settings of all relevant views
- Support for BEA Weblogic 9.â1
- New profiling setting to optionally show system threads
- Optionally include weak references when searching for path to GC roots in the reference graph of the heap walker
- Instant feedback in the status line when moving the mouse over edges in the reference graph and the call graph
- Deadlock detection graph: show possible deadlocks if a thread holding a contended monitor is waiting to be notified
- Long running incomplete method calls without any further profiled child method calls will now be shown with the correct times. Previously, only completed method calls of that kind were shown.
Bug fixes:
- Changed default sort mode in the "all objects" and "recorded objects" view to the more intuitive normal ordering
- Incomplete instrumentation when switching off the java core classes for dynamic instrumentation
- Thread history view sometimes had parts of threads missing when viewing offline snapshots
- Windows look and feel fixes
- Fixed faulty z-ordering of some JProfiler windows on KDE
- Rare deadlock when switching to the VM telemetry views
- Profiling settings were not easily accessible in the Netbeans integration
- More robust snapshot format, fixed rare cases of corrupted snapshot files
New features:
- Support for eclipse 3.â2 M4
- Support for Netbeans 5.â0 beta 2
- Locale-sensitive CSV separator char can be overridden in bin/âjprofiler.âvmoptions
Bug fixes:
- "Show path to GC root" caused exception in Netbeans 5 integration
- Time measurement type "estimated CPU times" didn't work correctly with JVMTI
- Ant task for profiling didn't work in headless environments
- Invoking "set root" multiple times did not work in call tree
- Wrong sizes in the recorded objects view for special cases
- Netbeans integration wizard did not work on Windows if user PATH variable did not exist
- On reconnecting to a remote application, "profiling settings could not be set" was sometimes displayed
Bug fixes:
- Fixed instability when taking heap snapshots with JVMTI
Bug fixes:
- Problem with eclipse 3.â1 integration
New features:
- Support for 64-bit JVMs: Windows/âAMD64, Linux/âAMD64, Solaris Sparc V9 and Solaris Sparc x64/âAMD64
- Support for Solaris on the x86/âx64 architecture
- Quick search in all tables and trees
- Package aggregation level as a tree-table view with direct access to classes
- IDEA 5 integration
- Netbeans 5 integration
- Filtering capabilities for monitor contention views
- Ant integration
- Redistributable agent: a new conversion wizard helps you distribute the profiling agent to your customer's machines
- Automatic config file synchronization for remote profiling
- Percentage threshold in call graph
- Exclusive view filters
- Selectable primary measure (instance count or shallow size) for all objects view and recorded objects view
- Preliminary eclipse 3.â2 integration (M2)
- Allow zip and jar files in the source path
- Export hot spots as CSV (in addition to XML)
- Remove IDE integrations when JProfiler is uninstalled
- Optionally display average value in call tree and hot spots
- VM telemetry views: current values are displayed in the legend
- Possibility to define an external source viewer in the general settings
- New "View"-Menu (instead of the "Edit"-Menu) that is synchronized with the context menu, session settings are now under "Session"
- More keyboard shortcuts. Keyboard are displayed in the toolbar tool-tips
- Added inherent time to XML export of call trees
- Integration between recorded object view and allocation views now also work for packages
- High contrast color scheme for thread history view (can be activated in bin/âjprofiler.âvmoptions)
- Possibility to reconnect if contact with the license server has been lost
- Integration wizard for Coldfusion MX
- Integration wizard for Sybase EAServer
- Integration wizards for all BEA Weblogic start types
Bug fixes:
- Several features did not work correctly after reconnecting to a remote session
- Thread status selector is now automatically switched to "All states" for JDBC, JMS and JNDI hot spots
- Bookmarks set programmatically didn't work in interactive mode
- Mac OS X: Apple-Q didn't quit profiled application
- Do not fail if -Djava.âlibrary.âpath is defined manually
- better recovery for invalid classes that should be instrumented
- CSV export in the time view of the heap walker produced empty output
- Time values are zero in CSV export of VM telemetry views
- Heap walker: static variables could have wrong content when using JVMTI
- Recording CPU data did not reset custom root in call tree
- Controller.âstartCPUProfiling in interactive mode was broken
- JSP component detection did not work if URL splitting was disabled
- eclipse 3.â0 and 3.â1 integration: profiling a JUnit Plugin Test did not work
Bug fixes:
- Fixed cumulated reference views for snapshot files recorded with JVMTI (new)
- Workaround for Java2D crash in graph views
- Fixed instrumentation problem with certain JSP pages
- Fixed annotation display in call tree in frozen and snapshot mode
- Improved robustness of snapshot saving in low memory situations
Bug fixes:
- Fixed a crash when setting view filters (new)
- Fixed a crash in the agent library
- Print warning if -Xincgc is enabled for JVMTI
New features:
- Measurement of JDBC, JMS and JNDI calls as annotations in the call tree
- J2EE component detection for servlets, JSPs and EJBs
- For servlets and JSPs, the call tree can be split for different request URLs
- Separate hot spot calculation for JDBC, JMS and JNDI calls as well as URL invocations
- Methods in the profiling API to register custom resolvers for JMS calls and URL invocations
- Selectable aggregation level for most views: methods, classes, packages and J2EE components
- Improved call tree views with enhanced visual feedback
- "Exclusive deep size" calculation in the heap walker
- Recording and display of object allocation times in the heap walker
- New "Time" view in the heap walker that shows a time-resolved histogram of allocations
- New sort modes in the references and data view of the heap walker for exclusive deep size and allocation time
- Global bookmarks for all time-resolved graph views
- Bookmarks for profiling events (starting and stopping of CPU and allocation recording)
- Method in the API to programmatically set bookmarks
- On-demand profiling: very small overhead if no CPU or allocation data is recorded
- Profiling with hotspot compiler enabled by default for Java 1.â4 and Java 1.â5
- New non-blocking startup mode of the profiled JVM for in-production profiling
- Support for new profiling interface JVMTI in Java 1.â5 and 1.â6
- New "All objects" view that works without recording allocations (JVMTI only)
- Substantial reduction of memory consumption and performance improvements
- Configurable timeout for long operations in the heap walker
- Multiple selection in the cumulated reference views in the heap walker
- New top-to-bottom hierarchical layout in the reference graph of the heap walker
- Allocation call tree and allocation hot spot views have class-resolution by default
- Option to not record primitive data in the heap walker (JVMPI only)
- New action in the call graph to remove unconnected methods
- Integration of the recorded objects view with the allocation views
- Configurable threshold in the call tree view in percent
- Action in the window menu to close unused console windows
- Method in the API to save a snapshot when the JVM exits
- Methods in the API to start and stop thread profiling as well as VM telemetry recording
- Support for Netbeans 4.â1, including free form projects and the bundled Sun Java System Application Server
- Support for BEA Weblogic 9.â0
Bug fixes:
- Major performance improvement for the thread history view
- Integer overflow could lead to negative numbers in the hot spots view
- Many bug fixes and smaller enhancements in the GUI
- Many improvements and fixes for the GUI on Mac OS X
- Fixed stability issues related to finalizers
Bug fixes:
- eclipse integration: support for eclipse 3.â1 M7
- eclipse integration: exception when profiling eclipse applications
- eclipse integration: JRE selection for eclipse applications was not recognized correctly
- exception when quickly opening nodes in the call tree
New features:
- integration wizard for Websphere 6.â0
Bug fixes:
- eclipse 3.âx integration didn't work when default bootpath for JRE installation was switched off
- view source in the eclipse 3.âx integration did not work for multiple projects
- improved number format for CSV export
- copying rows in tables showed object references instead of numbers in some views
- string display in the heap walker was sometimes incorrect
- redraw problems in deadlock detection graph were fixed
- fixed overflow in hotspot views that could lead to negative times and percentages
- setup wizard dialog was too small on Mac OS X
New features:
- rewritten eclipse 3.âx integration
- rewritten IDEA 4.âx integration
- IDE integration for JDeveloper
- IDE integration for Netbeans 4.â0
- considerably reduced memory consumption
- improved long-term stability for profiling
- heap walker: in the cumulated incoming reference view, reference holders as well as referenced objects can be displayed and selected
- option to keep the profiled JVM alive
- support for Java Web Start 1.â5
- CSV export for graphs
- enhancements in XML export for trees
- integration wizard for profiling servers in IBM WSAD
- integration wizards for Pramati 3.â5 and Pramati 4.âx application server
- integration wizard for Websphere 4.â0 Advanced Edition
- integration wizard for Sun Java System Web Server
- integration wizard for Sun Java System Application Server
- integration wizard for Oracle 10g Application server
- integration wizard for Apple WebObjects Developer 5.âx
- snapshot files (*.âjps) can be opened from the command line and from the Windows explorer
- JBuilder IDE integration now supports JBuilder 2005
- much better appearance of the JProfiler GUI with Windows native look and feel
- JProfiler GUI now also runs under Java 1.â5
Bug fixes:
- monitor statistics were broken
- invalid class files caused a shutdown of the profiled application
- many bug fixes in the GUI
New features:
- optional line number resolution in call trees and hotspot backtraces
- export views to CSV data and XML
- integration wizards now support profiling on remote computers
- new wizards for converting local sessions to remote sessions and offline profiling sessions
- option in hotspot views to add filtered classes to calling class
- reference graph: instances have plus and minus icons for outgoing and incoming references. References can now be hidden.
- method graph: methods have plus icons for incoming and outgoing calls. Methods can now be hidden by deleting them from the graph
- possibility to search for arbitrary number of garbage collector roots in the reference view of the heap walker
- possibility to view source files in the reference graph of the heap walker and the method graph
- digit grouping for numbers in all views
- separate cumulated and non-cumulated view modes for allocations view in the heap walker
- library parameter for verbose mode to print out instrumented classes
- on Windows, the -Xmx setting for JProfiler is now in the file jprofiler.âexe.âvmoptions
Bug fixes:
- resolved possible collision with zlib libraries of other products
- Weblogic 8.â1 SP3 start scripts were not recognized
- resolved rare deadlock when starting up local sessions
- rapid keyboard navigation in reference graph of the heap walker lead to an exception
- snapshots saved with JProfiler 3.â0 could not be read by JProfiler 3.â1
- IDE integrations did not work with some JREs
- IntelliJ IDEA 4.âx integration: working directory was not respected
- reference graph: exception when Strings > 10k were displayed
Bug fixes:
- fixed stability problems with Windows XP Service Pack 2
- dynamic instrumentation did not work with Apple 1.â4.2 Update 1
- application server integration wizard did not work on Mac OS X
- the deep size calculation for object sets in the heap walker could produce wrong results
Bug fixes:
- fixed net I/âO problems with IBM and classic JVMs
New features:
- new "net I/âO" thread status in CPU and thread views
- filtering controls for threads in the thread history view
- selection of collection contents in the reference view of the heap walker
- selection of multiple objects in the reference view of the heap walker
- optional display of object IDs in the reference view of the heap walker
- possibility to sort instances in the reference and data view of the heap walker by shallow and deep size
- selection of multiple objects in the data view of the heap walker by flagging them
- calculation of the deep size of object sets in the heap walker
- expansion popups for long thread names in the thread history view
- display of shallow and deep size for the current object in the reference view of the heap walker
- big numbers are formatted with separators in tree views
Bug fixes:
- unreferenced objects were accessible in the reference graph of the heap walker even when unreferenced objects were removed for the heap snapshot
- "show path to root" function in the reference graph of the heap walker could produce incorrect results
- method graph: fixed inherent time calculation for recursive methods