A profiler is a development tool that lets you examine memory useage and other bottlenecks in your app.
Free and simple. I like the built-in sun monitoring tool. Java 1.5+ only.
Simply add appropriate argument to your launch configuration:
After that, open your unix terminal and type jconsole which launches the monitoring console and detects running java apps. Select your app and watch it at work. I like the Memory and Threads tabs.
I've tried some of them.
For the big problems jprofiler is great. The docs are useful, the interface is good and the performance is okay.
I prefer jMechanic. It's small, free and works together with WOLips. Just some clicks to set it up.
I don't remember much about the others. Some of them don't run under MacOSX and it can take a lot of time to find how to use them together with WO.
profiler homepage: http://www.ej-technologies.com/products/jprofiler/overview.html j
jmechanic homepage: http://sourceforge.net/projects/jmechanic/
If profiling on Windows is an option, you might also want to look at jSprint:
It is shareware, US$50. I've used it and was satisfied with it. It seems like a good deal for the price. I've not (yet) used jMechanic, so I can't compare the two.
Before you buy anything or try anything you would be well advised to spend a couple of hours at the above Java Performance Tuning site reading up on it: http://www.javaperformancetuning.com/index.shtml
There is a lot of good information there.
(As of March 2007 the J-Sprint link above does not seem to work - the software may not be available anymore)
None of the tools on this page appear to work with WebObjects 4.5.1 on Windows.
I use JProfiler from ej-technologies. It works as well as any of the other big named profilers, and it has explicit support for WebObjects. It is, however, not free like some of the other suggestions.
The CHUD tools (i.e. Shark) work on Java.
If you want to use Shark, Mark Ritchie did a presentation about using Shark with WebObjects at WOWODC 2008.