Profiling is an essential part of software development. Profiling tools are generally expensive and not affordable for individual developers and freelancers. But, there are several free, open source profiling tools that are as good as commercial tools.
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.

Eclipse TPTP Tracing and Profilng Tools addresses the tracing and profiling phases of the application lifecycle. The Tracing and Profiling Tools Project provides frameworks for building tracing and profiling tools by extending the TPTP Platform.
Eclipse profiler – plugin for profiling Java applications inside of Eclipse. NOTE! Project is dead and does not work on new versions of Eclipse. 
JMemProf is a live Java memory profiler suitable for deployment in web containers such as JBoss, Tomcat and others. JMemProf allows you to retrieve memory profile information while your application is running.
JMP is a profiler for java that can be used to trace objects usage and method timings. JMP uses the JVMPI interface to gather statistics and interact with the JVM. JMP uses a GTK+ interface to show the status. 
The Java Application Monitor (JAMon) is a free, simple, high performance, thread safe, Java API that allows developers to easily monitor production applications. JAMon can be used to determine application performance bottlenecks, user/application interactions, and application scalability. JAMon gathers summary statistics such as hits, execution times (total, average, minimum, maximum, standard deviation), and simultaneous application requests. JAMon statistics are displayed in the sortable JAMon
jMechanic is an Eclipse Java IDE plugin providing Java Profiling tools. Tools such as CPU Sampling and Heap Summary allow the Java developer to tune up the performance of their Java programs all within the comfort of the Eclipse IDE.
The Java Runtime Analysis Toolkit is a low overhead, easy to use, open source performance profiler for the Java platform. JRat monitors an application s execution and persists performance measurements. This data can then be viewed and analyzed using the JRat Desktop, a Swing application. 
xdProf is a cross-platform tool that captures and analyzes stack traces sent at a fixed interval from Java Virtual Machines in a distributed system.
The Garbage Collector Spy Tool, or GCspy for short, is a generic and highly-adaptable heap visualisation framework, designed to visualise a wide range of memory management systems, whether they depend on garbage collection or implement explicit de-allocation.
A zero-overhead JVMPI plugin for finding first indications of memory leaks in production environments.
Where commercial tools kill the performance of your application by collecting uninteresting performance data (such as who allocated this object ),
*J is a toolkit which serves two primary purposes:
JVMPI based visualization using a TreeMap
1 Response to 13 Great Tools for Profiling Your Java Applications
Peter
October 27th, 2009 at 2:42 am
Some important missing tools:
http://www.yourkit.com/ free licenses for open source projects
http://profiler.netbeans.org/ already installed in netbeans; works with jee-, jse-, maven-projects, …