The debugging and troubleshooting cycles of software development can often be the most tedious and time-consuming. Java programmers looking to reduce the total time to market - while continuing to maintain high standards for application performance - will benefit from OptimizeIt Professional 3.0.
The latest Java-code profiling tool from Intuitive Systems, OptimizeIt, helps take the guesswork out of debugging your Java applications, servlets, applets, and JavaBeans by providing detailed run-time feedback of a program's computer resources utilisation. I was impressed at how quickly I was able to locate code inefficiencies and memory leaks with this comprehensive suite of tools.
OptimizeIt Professional 3.0 is currently the only profiling application that provides both common methods of CPU profiling - sampling and instrumentation - on any Java virtual machine (JVM).
Sampling - stopping the program at fixed intervals to poll for executing methods - is typically adequate on larger Java programs but suffers from an inherent potential for overlooking data. However, the instrumentation process attaches additional code that the profiling software uses to calculate methods and timing without any loss of data.
Although there is an overhead incurred with instrumentation, the added accuracy for troubleshooting smaller servlets - or fast-executing recursive loop programs, for example - is invaluable. Rival KL Group's JProbe provides only a custom-instrumented virtual machine, so OptimizeIt's support of both techniques offers flexibility.
Setting up a test session could not have been easier. After configuring basic parameters, the console window allowed me to control and pause program execution. During profiling, OptimizeIt displays real-time feedback on instance creation and CPU usage as it unfolds.
The abundance of graphical and tabular data afforded by OptimizeIt's detailed profiling is quickly sorted and searchable, making it easy to drill down through complex structures.
A hierarchical tree of method calls detailed the caller and callee, as well as the CPU time consumed by each. A graph further enumerated all instances within a given class to reveal incoming and outgoing references, as well as locations where references were allocated. This data proved instrumental in rapidly identifying object references responsible for improper garbage collection.
Additional view perspectives, such as the thread activity time line and the Hotspot Display, yielded clear, "what's what" snapshots of resource consumption and areas in need of further optimisation.
I was impressed with some of the more advanced memory-profiling capabilities found in OptimizeIt. During testing, a real-time Heap display charts classes and allocated instances with a corresponding utilisation histogram that auto-highlights detected memory leaks. In several tests with contrived code, OptimizeIt got it right every time.
The option to set reference "high-water" marks during testing proved particularly helpful in isolating and associating delta to specific actions, and the display, which could be filtered, made for fast visual tracking of specific metrics.
Although OptimizeIt Professional is not compatible with as many integrated development environments (IDEs) as JProbe, I found that it seamlessly integrated with both Inprise JBuilder and Symantec Visual Cafe. OptimizeIt assimilates the IDE's environment parameters and uses the same JVM, assuring consistency across the development and testing process.
Although it makes no attempt to offer improvements to performance weaknesses, as Intel's Vtune does, OptimizeIt is brimming with useful capabilities, such as remote profiling for reduced overhead, open APIs for customised in-code profiling control, and full support for Java 2 and Sun's Java Development Kit 1.2.
I see this as a must-have tool for developers looking for a detailed understanding of their Java program's interactions. OptimizeIt Professional 3.0 provides programmers with the necessary insight to reduce the development cycle and improve the overall performance of their Java applications.
The Bottom Line
Optimizelt Professional 3.0
This well-integrated set of real-time and static profiling tools affords Java developers a comprehensive means of curtailing the debugging cycle and improving coding efficiencies - resulting in reduced development costs and an improved level of end-user satisfaction.
Pros: Java Development Kit 1.2 and Java 2 support; comprehensive feature set; multiple views for rapid insight to relevant data; remote implementation.
Cons: No support for just-in-time compilers; ties into only two integrated development environments.
Platforms: Windows 95/98, Windows NT, Sun Solaris, Java Development Kit 1.1.x and 1.2.
Price: Downloadable from the Web site.
Intuitive Systems www.optimizeit.com