Mitch Pronschinske is the Lead Research Analyst at DZone. Researching and compiling content for DZone's research guides is his primary job. He likes to make his own ringtones, watches cartoons/anime, enjoys card and board games, and plays the accordion. Mitch is a DZone Zone Leader and has posted 2576 posts at DZone. You can read more from them at their website. View Full User Profile

JProfiler 6.0: An Overview with Ingo Kegel

11.13.2009
| 10903 views |
  • submit to reddit
The JProfiler, or "Java Profiler", has many useful features for Java developers.  Efficient profiling is paramount in application performance checks.  In this exclusive interview, DZone spoke with Dr. Ingo Kegel, the CEO of ej-technologies, for an overview of JProfiler and its recently released 6.0 version.

JProfiler Overview

Dr. Kegel explains, "These days, the tool category is very well known due to the "Visual VM" tool that is bundled with the JDK.  Profilers used to be mostly about performance bottleneck search. However, in Java, memory profiling is very important and thread profiling in highly concurrent applications is also a challenge."

JProfiler has several functionalities in Java development, says Kegel.  "We focus on three types of activities: Efficient development, performance QA and fire-fighting performance problems in production. So, JProfiler will be used by different people, depending on what it is used for."

"Towards the low-level side, profilers share a gray area with debuggers," Kegel explains.  "They show you stuff that debuggers could show you in principle - but debuggers don't do too well.  Towards the high-level side, profilers overlap with monitoring tools that are routinely used in production, but have much stricter requirements for overhead and usually do not use the JVMTI (the native tool interface of the JVM)."

Kegel explained how JProfiler is commonly deployed: "Many of our users use JProfiler through its IDE integrations.  In the IDE, users have a "Profile" run mode, much like the "Debug" run mode. JProfiler is opened side by side with the IDE and shows information about the profiled process.  In this scenario, there is no configuration required apart from installing the IDE integration, which is a couple of clicks in the JProfiler GUI."

"Often, users have to profile application servers remotely. They will run the command line integration wizard for the server on the remote computer and attach with the JProfiler GUI.  Another possibility is to configure a session with triggers that control the recording of data and save snapshots at some time. For example, the profiling agent could wait for the CPU load to exceed 70%, then record 10 minutes of CPU data, and save a snapshot. Those snapshots can then be opened in JProfiler GUI."

Kegel says snapshots can be compared with respect to a wide range of data in the QA perspective.  "Reports can be generated in the JProfiler GUI or with command line executables," Kegel explains.  "In that way you can detect and analyze regressions across different builds or versions."

JProfiler 6.0

JProfiler is a mature project.  ej-technologies has been developing JProfiler since 2001. Dr. Kegel says they have enough new features planned to keep developing it for the next 20 years.  DZone asked Kegel about the recently released 6.0 version of JProfiler.

Thread and monitor profiling was a big focus in 6.0," Kegel says.  "The exceptional method run recording feature is really interesting and quite unique: Often a method that is invoked very frequently, such as a web service call will regularly run in an acceptable time, but every once in a while, say not more often than one in a million, it takes unacceptably long. It is very difficult to analyze such a problem in detail, unless you have the exceptional method run recording feature in JProfiler 6.0 that presents you the call trees of the slowest method runs separately. Also, I think that the tree maps are really cool!"

 


JProfiler comparisons

On the subject of competition, Kegel had some straightforward answers: "On the open source side, the profiling tools with the most features is Sun's Visual VM. The main benefit to us is that we don't have to convince people anymore that they need a profiler.  Once people have a serious problem, they go looking for the best tool to solve it and I hope a lot of them end up with JProfiler.  On the commercial side, there is the venerable JProbe that's been around since the very early Java days, and a few other tools with a smaller feature set such as YourKit or AppPerfect."

DZone asked Dr. Kegel about the challenges of making a solid profiler.  Kegel said, "The biggest challenge that a profiler vendor faces all the time is that recording more data is always desirable for the user, but profiling must not get in the way in terms of CPU and memory overhead. Another piece of complexity is that the profiling agent must be implemented in native code. This means we have to support each platform separately."  JProfiler has a long list of supported platforms.

The Future of JProfiler

In closing, DZone wanted to get the inside scoop on ej-technologies' plans for the next version of JProfiler.  Kegel told DZone, "[JProfiler] 6.1 early next year will bring full Java 7 support. This concerns code compiled with -target 1.7: Pre-verification is now mandatory and the new invokedynamic bytecode targeted at dynamic languages will be supported. Generally, we want to do more for dynamic languages like Groovy, JRuby, Jython, Clojure and others in future releases. Long term plans include more features for JEE and specific framework analysis. Also, our issue tracker is full with "minor" usability things and smaller feature requests. We implement these in the minor releases while major releases focus on headline features."

For documentation on JProfiler and a reference manual, visit ej-technologies' website.

Comments

Mikael Grev replied on Fri, 2009/11/13 - 4:55pm

I have used JProfiler since 3.x and since I'm very interested in performance I couldn't think of a world without it.

Sure, VisualVM is there and free, but in its current state it's no where near JProfiler.

Maybe among the most useful features in JProfiler, one that's not very well known I think, it that you can select any object in memory and trace it back to it's roots, normally a statically held object. That has been invaluable to me when tracking down memory leaks that I didn't think I had.

Kudos for a great tool! This is my way of paying back the hours/swedish kroner I saved with it (minus its monetary price, which is small change when compared to the winnings).

Cheers,
Mikael

Andrew McVeigh replied on Sat, 2009/11/14 - 4:13am

>I couldn't think of a world without it.

 agreed, jprofiler is exceptional.  it's helped me solve some very tough performance problems in my code.  

William Louth replied on Sat, 2009/11/14 - 9:00am

Ingo,

I know we are focused mainly on high performance production environments but I am still surprised that you did not call out JXInsight considering that its ever expanding feature set is the inspiration for one or two features in every release of JProfiler. JXInsight is the gold standard in this area in terms of feature set, extensibility and performance (100-1000x faster) how could you not attempt to compare relevant features (ignoring dump the world in a file analysis which is never going to be production ready).

We had contextual traces with associated call stacks (tracepoints we call them) available in this release have been in JXInsight for years now. Note: Contextual tracing was introduced to JProfiler following its appearance in JXInsight.

Statistical distributions (again introduced in this release) have been in JXInsight Trace and Transaction analysis technology has been for many years. We even made them available in our high performance resource metering technology recently.

JXInsight Probes Quantization
http://blog.jinspired.com/?p=704

The new auto-tuning dynamic instrumentation feature along with the exceptional method analysis seems largely a rip-off of our IMRR approach and tooling support.

Instrument->Measure->Refine->Repeat
http://williamlouth.wordpress.com/2009/04/06/instrument-measure-refine-repeat

Shame on you for not having the decency and integrity to give due credit for innovative ideas clearly stolen (or inspired) from other products.

Is this going to be the norm in the industry (dynaTrace leading the pack of copycats/imitators) as I see the latest early access version of Yourkit is taking a similar line knocking up a clone of BTrace to compete with VisualVM plugin. Thankfully it is a BTrace clone.

William

William Louth replied on Sat, 2009/11/14 - 9:06am in response to: William Louth

With regard to your future support for (J)Ruby and [J|P]ython is this not already available today without having to require a Java 7 runtime with invokedynamic support?

The Fastest Python Profiler is a Java Profiler
http://williamlouth.wordpress.com/2009/09/29/the-fastest-python-profiler-is-a-java-profiler/

The Fastest Ruby Profiler is a Java Profiler
http://williamlouth.wordpress.com/2009/08/05/the-fastest-ruby-profiler-is-a-java-profiler/

By the way Groovy support is already in the works.

Ingo Kegel replied on Sat, 2009/11/14 - 12:30pm in response to: William Louth

Hi William,

>I know we are focused mainly on high performance production environments

Exactly, your focus is quite different, so I consider JXInsight to be in a slightly different category. I wasn't trying to give a really comprehensive overview of the competion in the interview, so please don't be offended that I didn't mention JXInsight. I'm sure that JXInsight is a great tool.

>The new auto-tuning dynamic instrumentation feature along with the exceptional method analysis seems largely a rip-off of our IMRR approach and tooling support.

 I just read the article you linked to and it's not the same thing at all. Also, even if it were, I don't think it would be a problem. Some of our own novel features have been copied by other tools, and I would never complain about it. Actually, I'm proud of it :-)

Ingo

GeekyCoder coder replied on Sat, 2009/11/14 - 2:28pm

William,

 the following is just my opinion of why JXInsight will remain second-rated even though capability-wise, it is comparable to the popular tools.

 whenever I think of  Profiler and memory tool, the two prominient tools that come to my mind are JProfiler and Yourkit. The answer is why ? It turns out that JProfiler and Yourkit have positioned and marketed themselves as general layman tools for the mass market. Hence their reception is well-received and marketed through word of mouths from blogs and reviews. They have enterprise "features" but they market themselves less as "Enterprise" software. The word "Enterprise" probably give interested user the impression that the tool is only meant for Enterprise, with high price and complexity of "Enterprise" product, hence they will just skip on the product to look for simpler tools.

For instance, JProbe uses to be very popular and pioneering profiler tool from KLGroup until it is acquired by Quest which price the product in the Enterprise Tier with "Enterprise" marketing message. It seems to sink into oblivion. 

So based on my own perception that even though  JXInsight may be competitively priced, the marketing position of JXInsight seeks to be stumbling block to its popularity:

This is excarberated by the statement of

 "JXInsight is the foremost comprehensive enterprise Java performance monitoring, problem diagnostic, transaction analysis and application management solution available in the marketplace today."

 and complexity of  many product line:

JXInsight Probes   

JXInsight Traces   

JXInsight Transact 

JXInsight Diagnostics

JXInsight Insight

JXInsight Metrics  

Users are more interested in All-In-One simplified and affordable product that can do the job good enough. Most Users are not willing to invest time to check-up on the brochures or detailed information of the product in the site, let alone install the software for trial. Rather, most users will just rely on word of mouth and blog to influence to decision to use the tool. The more the positive reviews, the more they are willing to try the tool. Kind of network effect.

If JXInsight is to be popular contenders in the market as JProfiler and Yourkit, it will be best to simplify the product line (users unwilling to spend more money on separate tools if a single tool can do most of the work, and change marketing message to focus more on general developers rather than Enterprise Developers). Market its benefits rather than jargon and technology (Something I find JProfiler and Yourkit marketing team do very well in conveying the benefits. )

 Apart from this,  I agree with Ingo.  I disagree on giving credit on feature pioneer because it is natural for competitors study and take the best idea from its rival and retrofit it into their products. If every company need credit for pioneering feature, every company will be guilty of stealing and plagarizing ideas. No company can monopolize innovation unless they choose to patent it.

I believe that success of JProfiler and Yourkit is their focus marketing and simplified product.

Anyway, just my humble opinion. No hard feeling... <:^}

William Louth replied on Sun, 2009/11/15 - 3:52am in response to: GeekyCoder coder

Actually all of the above technologies are available in a single product (completely integrated) called JXInsight. We could actually distribute and sell them separately but we do not. What we do is call out the multitude of different data collection techniques supported by JXInsight.

With regard to "second rate" this is clearly a mislabeling considering we are the only product on the market today that can be installed in a high performance production environment. We are 100-1000x times faster than the competition and our technology and designs have always been considered far superior and ahead of their time. We do it the right way which means that we do not over simplify the problem domain and solution just for the sake of a quick sell. This is a crucial point because we provide "war council" services to some of the top IT software companies in the world.

What holds back JXInsight amongst the development community is (1) the marketing messaging which confused you into thinking there are multiple products, (2) the large number of low hang fruit problems in applications that could be solved by primitive tooling (i.e. a call stack dump), (3) the belief that simplified "don't have me think" tooling translates to faster problem solving (vital lies?), and (4) the largely ad-hoc "gung-ho" nature of performance tuning (low adoption of software performance engineering)

In terms of production deployment we have not seen any of those reported as being "production ready" actually used in anger in such environments without being completely handicapped.

Thanks for taking the time to comment. Simplified messaging on the site is coming in the new year with a revamp of the site and a new development "lite" edition.

William

William Louth replied on Wed, 2009/11/18 - 3:35pm in response to: Ingo Kegel

Not the same thing at all? Come on are you serious or just playing with me.

The only difference is that we ** only include hotspots ** after excluding all cold spots identified and labeled dynamically at runtime. Whereas you require the user to manually exclude cold spots (high frequency low cost high overhead) after the runtime and from port-portem analysis of the performance model collected.

I find it amazing that after years in the business you now only come out with something like this following our more recent publications of related product features of our product that have been present for quite sometime.

By the way your "exceptional method run recording" that you claim to be unique is in a number of other products today. I could name them if anyone wants though I have to say this does not at all scale in any of the products I have tested. Call journalling or path tracing does not scale at runtime or during offline analysis in how it is being currently modeled - call trees and large sequences.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.