JFluid is a profiler that uses bytecode instrumentation and, unlike most of the other tools, can perform it on the fly, while the profiled application is running. This is enabled by the code hotswapping technology in the experimental version of Sun's HotSpot JVM that JFluid uses. JFluid allows you to instrument and de-instrument limited portions of a running application, and/or turn on and off different kinds of profiling (CPU, memory) at run time. This is especially useful when profiling large and complex applications.

The main new features in this version are:
* A new "sampled instrumentation" profiling mode, that combines the advantages of instrumentation (exact number of method invocations recorded) with those of sampling (reduced overhead, better precision for call-intensive applications).
* 3 new monitors: number of threads, % of time spent in GC, and surviviing heap generations number. The latter monitor can help users to detect signs of a memory leak early and unobtrusively.

There are also a number of smaller improvements: better performance of memory profiling, optional presentation of CPU results at a class-granularity level, an option to disable memory profiling for unwanted classes and change some other settings on-the-fly, a "Run GC" button, smarter "attach on startup" behavior, better diagnostics of some exceptional situations in the profiler, etc.

For more information and free downloads, see http://research.sun.com/projects/jfluid