Attaching to Windows services for Java profiling

Several profilers can attach to running JVMs, but only JProfiler can attach to Windows services. It is very easy to do:

1.Start “Quick attach”:

2. All JVMs are shown that run with your user account. Select the “Show services” button at the top:

 3. Select your service:
4. Profile!

Using the probe tracker

This screen cast shows how the probe tracker can be used to record fine-grained chronological information for selected hot spots and control objects, such as JDBC connections. The probe tracker is available for all probes in JProfiler.

Profiling JPA/Hibernate

The screen cast below shows the capabilities of the JPA/Hibernate probe in JProfiler. It presents the events view of the probe that shows a chronological progression of persistence operations as well as the hot spots view that shows back traces and associated JDBC statements.

Profiling with IntelliJ IDEA 11

As always, we try to provide an IntelliJ IDEA plugin immediately when a new major version of IDEA is released.

Most of the time, a release of IDEA does not coincide with a JProfiler release, so we release the plugin separately in the plugin manager. To install the JProfiler plugin in IDEA (both community and ultimate editions), click on “Browse repositories” in the plugin manager and look for “JProfiler”.

The plugin will be bundled in the upcoming JProfiler 7.1 release.

Update (2012-01-16): By mistake, the plugin version (different from the JProfiler version) decreased from 10.3 to 10.2, so many update problems were caused by this. Now the plugin version has been increased to 11.0 and the update should work if you had 10.2 or 10.3 installed previously.

Java profiling comes to Linux ARM

Up to now, there was no good solution for profiling Java code on embedded systems. With the 7.0.1 release of JProfiler, we have introduced support for the Linux ARM platform. The native agent libraries in the bin/linux-arm directory work with the official Java SE for embedded from Oracle.

On the embedded device, you just add the VM parameter -agentpath:[path to libjprofilerti.dll] to the profiled JVM. In the JProfiler GUI on your development machine, you create a session of type “Attach to profiled JVM” to start profiling.

Sampling vs. Instrumentation

Fabian Lange from codecentric has written an excellent article on the differences between sampling and instrumentation.

Sampling and instrumentation are the two modes how methods are measured for CPU profiling. Both have advantages and disadvantages and it depends on the use case which is better for you.

This decision is already prominently featured in JProfiler when you start a new session for the first time, as shown in this screen cast.

Using the “Run interceptor script” trigger action

In the screen cast below I show how to use the “Run interceptor script” trigger action in a method trigger to print out some internal state of the application for debugging purposes. This is done without recompiling or restarting the application.

Creating a custom probe

This version is outdated. There is a newer version of this screen cast.

In this screen cast I show how to create a simple custom probe that measures how often the paint method of the “Animated Bezier Curve” demo is called together with clip bounds information. The example custom probe features events, telemetries and hot spots view.

Inspections in the heap walker

In this screencast, I show what inspections are available in in JProfiler’s heap walker and what they are capable of. Also featured is the powerful custom grouping inspection that lets you group object sets with a code snippet that is directly entered in the JProfiler GUI.

Heap walker graph: Finding paths between selected instances

In this screencast, I discuss the graph view of the heap walker (new in JProfiler 7.0) and how to search for reference paths between two selected objects. Also, I show how to resolve transitive references in the biggest objects view with the help of the graph view.