The ongoing advancement of technology, in both processing power and storage technologies, has brought with it a number of new and interesting technologies. These technologies trade pure application performance for secondary concerns, such as programmer efficiency or system flexibility. Among these are technologies like garbage-collected just-in-time-compiled languages such as Java™, and a greater prevalence of whole-system virtualization.
As computer processing power and speed rapidly grows ever greater, and the cost per unit of processing power continues to decline, it might seem that the need for individual application efficiency may seem to be lessening. However, even the smallest applications may suffer crushing performance issues when applied across a sufficiently large number of users. Also, the largest applications may fall prey to nasty performance bottlenecks and memory leaks that hurt application availability, impair usability due to page load time issues, and potentially require costly upgrades where code fixes would suffice.
The IBM® Rational® Application Developer and IBM® Rational® Software Architect profiling tooling provides sophisticated tools that developers can use to identify and alleviate these performance issues. Both products package the profiling tools that are described in this tutorial; however, while the functionality and features are available in either, this tutorial focuses on Rational Application Developer. The profiling functionality is based on the open source Eclipse Test and Performance Tools Project (TPTP) Java™ Virtual Machine Tool Interface (JVMTI) Profiling agent, for which more information is available in the Resources section.
The Rational Application Developer profiling platform provides three different analyses of application behavior:
- Memory-usage analysis
- Method-level execution analysis
- Thread analysis
Built-in integration with the existing Rational Application Developer launch types makes profiling your application as easy as selecting the stop-watch profiling icon, and then selecting your existing Run/Debug launch configurations from the launch list. However, when your profiled application has launched, and the data has begun to be collected, a familiarity with the terms and concepts of application profiling will be helpful in getting the most out of the profiling functionality.
This tutorial provides you guidance on using Rational Application Developer to profile your Java applications. To that end, it will first provide relevant background on the Performance Tools functionality.