Profiler4j is a Java CPU profiler 100% portable. Profiler4j's primary goal is to be simple to use by allowing sofisticated UI interactions. If you're unpatient like me, just jump to the getting started section or see some screenshots.
But please keep in mind that this project is in early development stage and may have some nasty bugs. Also, I plan to add much more features in the next releases.
Here are some key features of "Profiler4j":
· Based on dynamic bytecode instrumentation.
· 100% Java.
· Simple deployment -- just add a parameter to the command line and you're ready to go.
· Remote console to view and analyze results. Currently two view modes are supported:
· Graph view (already functional) similar to JProbe.
· Call tree view (in progress)
· Fine-grained configuration that can be freely tuned without restarting the profiled JVM.
· Call Tree View still has some bugs with recursive methods (seems ok since 1.0-alpha4)
· Core java classes (java.*, javax.*) and some other packages (org.xml.*, org.jaxen.*, etc.) are not profiled.
· Constructors are not profiled. That's a minor problem because most of the work is done by other methods anyway.
· Heavy memory usage when the target application has many threads. Not really a bug but I think it must be noted. You can provide rules to instrument only the classes you really need to.
· Java 1.5
What's New in This Release:
· This release fixes a critical start-up error when the Profiler4j Console is run under Linux.
· A new feature that allows the user to monitor threads (stack trace, state, monitor contention, etc.) was added.