views:

127

answers:

5

I'm looking for a Java Profiler for use in a very high demand production environment, either commercial or free, that meets all of the following requirements:

  • Lightweight integration with code (no recompile with special options, no code hooks, etc). Dropping some profiler specific .jars alongside the application code is ok.
  • Should be able to connect/disconnect to the JVM without restarting the application.
  • When profiling is not active, no impact to performance
  • When profiling is active, negligible impact to performance. Very slight degradation is acceptable.
  • Must do all the 'expected' stuff a profiler does - time spent in each method to find hotspots, object allocation/memory profiling, etc.

Essentially I need something that can sit dormant in production when everything is fine without anyone knowing or caring that it is there, but then be able to connect to it hassle (and performance degradation) free to pinpoint the hard to find problems like hotspots and synchronization issues.

A: 

I use Eclipse TPTP - Eclipse Test & Performance Tools Platform Project. Whether it is suitable for production use or not, it depends on the user. For me, it's fine and it does meet your needs.

http://www.eclipse.org/tptp/

eee
+2  A: 

Have you tried YourKit? It has almost all of the features you are looking for.

Bytecode Ninja
We did try Yourkit sometime ago, at version 7.x, and found it slowed down the JVM by an order of magnitude when profiling was on. Do their newer version use better Java 1.6+ integration and eliminate this problem?
Pete
It still slows down the JVM but it has improved a lot since then.
Bytecode Ninja
I read the current feature set - if it is not misleading this is exactly what I am after.
Pete
+1  A: 

I have been happy with jProfiler.

brettw
A: 

Checkout CA Wily.

http://www.ca.com/us/application-management.aspx

Kumar225
A: 

Another option is http://www.newrelic.com/. We have been using it in production for some time, and it seems to be pretty reliable and performant. Simple to setup (one .jar and a -agent commandline option).

magbyr