Zero-configuration remote attach

This screen cast shows how to attach to a remote JVM with zero configuration on the remote side. The only requirement is an SSH connection to the remote machine. Remote JVMs are listed in the JProfiler UI and a JVM can be selected for profiling.

Comparing install4j to other deployment solutions

Samuel Ruggieri from Voyager Games has written an interesting article comparing install4j against Java Web Start and other installer builders. His conclusion is this:

“At the end of this adventure, I have another experience that demonstrates the old adage that it’s cheaper to buy software than to build it. In this case, it’s cheaper and better. Software engineer hours are expensive, and for a non-trivial Java application, you’ll burn scores of them if you try to build a custom deployment and auto-update solution. At the end of that development, whatever you’ve built will almost certainly be inferior to what install4j can give you with a bare minimum of expense, both in terms of time and effort.”

If you’re thinking about comparing different deployment solutions for your Java application, maybe his article can provide some shortcuts.

Analyzing specific parts of the call tree

This screen cast shows how the “Set root” action is used to analyze a specific part of your code. The “Set root” action in the call tree view is used to select the call stack of interest. The hot spot view and the call graph then only show data for the selected part of the call tree.

Analyzing incoming and outgoing calls of a method

This screen cast shows how to use the call tree analyses to analyze both the cumulated outgoing calls of all top-level invocations of a selected method as well as to calculate the back traces of all its invocations. The results of the analyses are compared with the call graph that shows a combined view of incoming and outgoing calls.

Collapsing recursions in the call tree

This screen cast shows how to use the “Collapse recursions” call tree analysis to better understand recursive call trees. Recursive calls are stitched back to the topmost call of a method. Recursive call counts, merged stack counts as well as moved parts of the call tree are marked in the analysis view.

Remote profiling through an SSH tunnel

JProfiler has built-in SSH tunneling for direct and multi-hop SSH connections. This is useful for situations where you do not have a direct network connection to the machine where the profiled JVM is running. The screen cast shows how to configure the SSH tunnel and prepare the remote Java process for profiling.

Finding JDBC connection leaks

This screen cast shows how to detect JDBC connection leaks and find out where they’re coming from. JDBC connection leak analysis is integrated into JProfiler’s JDBC probe and has its own view. If a connection leak is detected, the stack trace and other information will help you to pinpoint the origin of the leak.

Custom telemetries in JProfiler

This screen cast shows how to quickly add new telemetries to JProfiler. MBean telemetries draw their data from numeric attributes of MBeans that are published in the profiled JVM. Script telemetries are built with a script that can call static methods in the profiled code to return a value of type long. Telemetries can have multiple data lines and are persistent for the profiled session.

JProfiler’s MBean browser

JProfiler has an MBean browser that shows you MBean attributes and operations. Many frameworks and libraries publish statistics and expose configuration interfaces via JMX. With JProfiler, no configuration of JMX connectors is required, the browser just works out of the box and is very easy to use.

Method splitting by parameter values

This screen cast shows how to split selected methods in the call tree by their parameter values. Directly in the call tree, you can select methods and set up scripts whose return values are used for grouping. The splitting nodes in the call tree provide insight into the distribution of your parameter values and give you the possibility to analyze the recorded method calls separately for special cases.