Extensible Java Profiler (EJP) is an open-source profiling tool for Java with a scalable and extensible architecture, allowing its usage for exotic programming languages that use a Java backend.
A Java profiler is a development tool used to optimize the performance of Java programs, by helping to find and tune away expensive parts of them.
EJP is absolutely free software.
Special features of EJP
every single method invocation is traced, which means you get the complete trace of a programs execution;
as of version 2.0, huge execution traces can be instantly loaded up and browsed on a tree view;
plugin architecture allows for creation of custom modifications to the displayed execution tree to better filter out information