JIP is a Java code profiler tool that analyzes Java code to identify performance optimization opportunities.
JIP is similar to the hprof tool that comes with the JDK, but there are some crucial differences. One of the most significant advantages of JIP is that it is interactive. Unlike hprof, which starts when your program boots and stops when the JVM exits, JIP allows you to control the profiler while your program is running. This means you can avoid profiling the web container, and instead focus on the web application itself.
Another advantage of JIP is that it's entirely written in Java. Many other profilers rely on native components, which can slow them down significantly. However, JIP takes advantage of the Java5 feature that lets you hook the classloader, making it exceptionally lightweight. A VM with JIP profiling turned on is only about twice as slow as one without a profiler.
JIP is also capable of gathering performance data, allowing you to get an accurate idea of the real-world timings for each class in your code. Unlike hprof, which has too much overhead to provide accurate information, JIP factors out the time used to gather performance data from its analysis. This means you can avoid cluttering your code with System.currentTimeMillis() calls, and instead rely on JIP to give you accurate timing measurements.
JIP also offers extensive filtering capabilities, allowing you to filter out classes and packages as needed. This ensures that you're only profiling the parts of your program that are most relevant to your analysis.
Overall, if you're looking for an efficient, easy-to-use code profiler for Java, JIP is well worth considering. It requires Java 5 to run, and the latest release fixes an issue with erroneously large timings.
Version 1.1.1: N/A