Which Java profiler is better: JProfiler or YourKit?

JavaPerformanceJprofilerYourkit

Java Problem Overview


Which profiler is better for general purpose profiling and heap analysis? 90% of our apps are standalone command line programs with substantial database and numeric processing. The other 10% are webapps/servlet container apps (with very little JSP and NO SCRIPLETS!). Target user would be Sr Software Engineer with 5-10 years of industry experience. We need support only for Sun JDK 5 and.

As of writing this question (2008-10-02), JProfiler was at 5.1.4 and YourKit was 7.5. Looks like YourKit 8.0 will be released soon.

Java Solutions


Solution 1 - Java

I've used both JProfiler 4 and YourKit 7.5, and YourKit wins hands down. It's so much less invasive than JProfile, in that I'll happy run production servers with the YourKit agent installed, which I would never do with JProfiler.

Also, the analysis tool that comes with YourKit is more intuitive (in my opinion), making it easier to get the root cause of problems.

Solution 2 - Java

If you're on jdk >=1.6_07 you might also want to look at jvisualvm which comes bundled.

Solution 3 - Java

Having used both JProfiler and Yourkit recently I find that yourkit is far superior for memory problem analysis and strongly prefer jprofiler for performance analysis. Yourkit's memory analysis seems to be much easier and intuitive. For performance analysis on yourkit I have been unsuccessful in resolving any performance issue I have tried to resolve with yourkit. JProfiler shows more accurate and concise information for performance analysis with the exact number of method invocations and percent time spent in each method. I have yet to find this in yourkit. It seems yourkit just gives sampling information which is not accurate unless you are measuring thousands of invocations.

Solution 4 - Java

I've used JProbe, OptimizeIt, and YourKit all extensively and they're all capable tools. Of the 3, my all around favorite is YourKit.

The one killer feature in JProbe is the ability to move from a perf snapshot to annotated source (with counts and timings). I found that to be exceptionally useful.

Solution 5 - Java

None of the tools other than JXInsight perform real database transaction analysis:

http://www.jinspired.com/products/jxinsight/concurrency.html http://www.jinspired.com/products/jxinsight/olapvsoltp.html

JXInsight's Probes technology is also the only one that could even run in production considering that we out perform netbeans profiler by 20x and yourkit 100x in SPECjvm2008 benchmarks.

http://blog.jinspired.com/?p=272

I am the architect of JXInsight so of course I am completely biased but at the same time I am probably more qualified than most in the Java industry to make such a claim since I have devoted the last 8 years to performance analysis for some of the most demanding of Java/J2EE application in production.

I should be point out that JXInsight is designed for software performance engineers and not just for the occasional adhoc profiling session. We have more than 4000+ system properties to configure the runtime and 600+ technology extensions libraries so it might be overkill unless one has a complex problem to solve and/or using the same tool across development, test and production is paramount.

Kind regards,

William

Solution 6 - Java

With Java 7 Update 40, Oracle included Java mission control (originally part of the JRockit JDK) - a very powerful performance tuning tool which is able to compete with yourkit/jprofiler.

Take a look and be surprised.

Solution 7 - Java

I have used both and my vote now is definitely JProfiler (in the current version 6) as it is easier to use and has a lot of useful additional features. In previous releases YourKit had some advantages with larger snaphots, but this is gone now.

Solution 8 - Java

Definitely YourKit ... It was able to open 4 gigs heap dump with just 1g of heap used. While Jprofiler with same heap allocation crashed!

Solution 9 - Java

i've used yourkit and it is a very nice profiler, the best i've ever used in java (i've used a variety of others over the years). that being said, i've never used jprofiler, so i can't give a direct comparison.

Solution 10 - Java

For quick and dirty profiling of command-line programs, JIP works really well.

Solution 11 - Java

Been using JProfiler for years and very happy with it. IntelliJ seems to switch their recommendation back and forth between YourKit and JProfiler so I would guess their feature sets are similar. I believe they both have trial version.

Solution 12 - Java

DISCLAIMER : Alternate answer.

they have various products for production monitoring/profiling UNLIKE other mostly development time tools : http://www.jinspired.com/products/jxinsight/
This post on theserverside on JDBInsight : http://www.theserverside.com/news/thread.tss?thread_id=13488<br>

DISCLAIMER : I am NOT associated with this company at any level.

Solution 13 - Java

I have used YourKit. I have not used JProfiler. I have used OptimizeIt before. I have very good opinion about YourKit. It is very stable and good GUI and good feature list. One unique feature I have noticed is CPU profiling with and without wait time (like I/O wais) including.

It is priced also very reasonably (about about $1100 for 5 licenses I think)

Solution 14 - Java

YourKit is great. You might also want to check out the profiler built into NetBeans--it's pretty cool.

Solution 15 - Java

Yourkit It's low overhead, stable, easy to install on the JVM to be profiled (just one dll) and powerful. For analyzing heap dumps it's the only profiler that comes close to the Eclipse Memory Analyzer.

Solution 16 - Java

I've only used JProfiler (and some JProbe). As far as I can tell, one limitation of YourKit is that they don't appear to support JDK 1.4.2. That's not an issue for many people, but it might be.

Solution 17 - Java

+1 for yourkit --- using 7.0 on dev boxes in windows
not used JProfiler for a while -- cannot comment since they might have improved in the meantime.

Solution 18 - Java

Just as an aside, you may want to consider the Netbeans profiler -- it's pretty good. But I've not used either of the two you mentioned.

Solution 19 - Java

I am using JProfiler and find it overall OK. It's "dynamical instrumentation" feature is terribly biased for small methods, though.

Solution 20 - Java

I am using the TPTP profiler. the best feature it has that this can be integrated very easily in Eclipse but the bad thing is that it makes the Eclipse run slower.

Solution 21 - Java

Definitly YourKit. It is the most intuitiv and stable!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTrentonView Question on Stackoverflow
Solution 1 - JavaskaffmanView Answer on Stackoverflow
Solution 2 - JavaSteve B.View Answer on Stackoverflow
Solution 3 - JavaJeramynView Answer on Stackoverflow
Solution 4 - JavaAlex MillerView Answer on Stackoverflow
Solution 5 - JavaWilliam LouthView Answer on Stackoverflow
Solution 6 - JavaMRalwasserView Answer on Stackoverflow
Solution 7 - JavalarskView Answer on Stackoverflow
Solution 8 - JavaAdnan MemonView Answer on Stackoverflow
Solution 9 - JavajamesView Answer on Stackoverflow
Solution 10 - JavathoroughlyView Answer on Stackoverflow
Solution 11 - JavaJavamannView Answer on Stackoverflow
Solution 12 - JavaanjanbView Answer on Stackoverflow
Solution 13 - JavaRejeev DivakaranView Answer on Stackoverflow
Solution 14 - JavastephmaraView Answer on Stackoverflow
Solution 15 - JavakohlermView Answer on Stackoverflow
Solution 16 - JavaDavid M. KarrView Answer on Stackoverflow
Solution 17 - JavaanjanbView Answer on Stackoverflow
Solution 18 - JavaWill HartungView Answer on Stackoverflow
Solution 19 - Javaquant_devView Answer on Stackoverflow
Solution 20 - JavavaibhavView Answer on Stackoverflow
Solution 21 - Javapan40View Answer on Stackoverflow