JavaFAQ Home » Java Tools
Good to know: JFluid - a profiling tool for the Java programming
language that allows you to profile an arbitrary subset of your program, that
can be changed on-the-fly, while the program is running. This is a capability
not available in any other profiling tool for Java at this time. Since JFluid
relies on our unique dynamic bytecode instrumentation mechanism, it can run only
on our specially modified HotSpot VM (currently derived from JDK(tm) version
In JFluid, you can select
your application's methods to profile by pointing at a single method. This
method is then treated as a call subgraph root. JFluid instruments this method,
and also all methods that it calls, transitively. In other words, it dynamically
reveals a whole call subgraph. Special bytecode packets are injected into these
methods on-the-fly, so that they start to generate profiling events such as
method entry and exit. These events are recorded, and then the obtained
performance data is displayed in the standard forms of context call tree (what
you see e.g. in OptimizeIt) and sorted accumulated method time list.
Alternatively, you can
instrument and profile an arbitrary code fragment within a method. This kind of
instrumentation is extremely lightweight and inobtrusive, therefore in this way
you can obtain very precise CPU time measurements.
Finally, you can activate
and deactivate memory profiling, that allows you to see the number and types of
all objects allocated by the program, the locations where these objects are
allocated, and the call paths at the moment of allocation. We are using a
special semi-statistical technique for gathering information about call paths,
that results in a highly controllable, and usually quite modest, overhead when
collecting this kind of information.
To learn more about the
JFluid tool, read the documentation page (http://research.sun.com/projects/jfluid/help.html)
(this is the same page that is available from within the tool when you hit
"Help"). Click here (http://research.sun.com/projects/jfluid/download)
to download JFluid.
At present JFluid is an experimental technology. The possibility of productizing
the JVM changes necessary to run JFluid, as well as the tool itself, is being
discussed, but no firm decisions have been taken yet. Note that if the JVM API
that is currently used by JFluid becomes a standard, it could then be used by
any tool from any vendor, for example for inobtrusive EJB application
monitoring, fault injection, and other interesting things.
All info is here:
Printer Friendly Page
Send to a Friend
Search here again if you need more info!