As was noted in the article, hprof has a number of short falls:
It is slow. If you've spent any amount of time using hprof, then you know what I'm talking about!
You can't start and stop it at runtime. If you've ever tried to profile a web application with hprof, you know what I'm talking about!
Filtering. hprof profiles everything and so it's slow and that output is expansive. When I'm profiling code, I want to know how my code is performing, not how some third party library is performing.
I like hprof -- it's helped me out more times that I can say, but it also has some
short comings, which is why I developed JIP
These two tools aren't profilers, there anaylsis tools. hpjmeter uses the output generated by hprof (the profiler that ships with the JDK) and the other tool you mentioned analyzes the garbage collection log. The problem with traditional tools like hprof is that 1: they require native components and 2: they don't let you turn the profiler on and off at runtime and 3: they profile everything -- even things that you as a developer can't change.
The article is more than just how to build an AO profiler -- it's about how to use the Java 5 agent interface to create AO-based solutions.
As for jrat -- the big different between JIP (which is discussed in the article) and JRat is that JIP instruments your code at runtime rather than requiring a separate step.
I like hprof -- it's helped me out more times that I can say, but it also has some short comings, which is why I developed JIP
These two tools aren't profilers, there anaylsis tools. hpjmeter uses the output generated by hprof (the profiler that ships with the JDK) and the other tool you mentioned analyzes the garbage collection log. The problem with traditional tools like hprof is that 1: they require native components and 2: they don't let you turn the profiler on and off at runtime and 3: they profile everything -- even things that you as a developer can't change.
The article is more than just how to build an AO profiler -- it's about how to use the Java 5 agent interface to create AO-based solutions. As for jrat -- the big different between JIP (which is discussed in the article) and JRat is that JIP instruments your code at runtime rather than requiring a separate step.
You're implying that there are languages (other than Java) that don't ever require profiling which is simply rediculous.