I am looking for a good java webapp profiling tool. I would like information on performance and memory usage, if possible.
Any suggestions?
JProfiler is really good. It integrates with all major IDEs and application servers.
Eclipse Memory Analyzer - the best tool for analyzing memory usage in Java applications
I am using Netbeans Profiler:
alt text http://www.netbeans.org/images/v6/1/features/profiler-java-cut.png
Its free, has task-based profiling, a cam walker, allows you to insert profiling points, track memory usage and threads, but best of all it allows you to profile remote JVMs. You can even attach those that are already running.
Oh, and it works very well if you have a maven build for your project.
SmartInspect is a profiler and registrar. Not specific to memory, but you can take a look. It also works with various languages, including Delphi, Java, and .NET. Includes other more advanced features.
I used YourKit Java Profiler 7.5 and was pleased with this. Java has some pretty good tools included in recent releases that you should pay attention to. (e.g. jmap -histo <pid> )
jmap -histo <pid>
I like to use SAP Memory Analyzer , which is based on Eclipse. It works very well, also for large heap dumps!
For an initial exploration, you can run jconsole and attach it to a running process. This will allow you to see memory usage over time, even in production, including garbage collection without completely affecting the profiler setting.