Detecting and analyzing run-time problems

Use the views in the Profiling and Logging perspective to detect and analyze run-time problems such as memory leaks and performance and thread bottlenecks in Java and Java 2 Enterprise Edition (J2EE) applications, and to identify untested code. The Profiling and Logging perspective also includes the Probekit feature, which allows you to customize analysis of your application’s run-time behavior.

Getting started with run-time problem determination
The run-time problem determination "Getting started" section provides the basic steps for collecting profiling data. It includes instructions for selecting the profiling set that collects the kind of data you need, and provides high-level information about accessing and using the views that can help you with your analysis.

Analyzing memory leaks
You can detect memory management problems at the class and object level by collecting heap information in heap dumps as your application runs, and then comparing the heap dumps. This comparison identifies changes in the memory that is allocated in the Java heap, and is the basis for generating a list of the most probable leak candidates.

Detecting performance bottlenecks
You can detect bottlenecks and other performance problems by collecting execution history data as you run your application. This data, displayed in the Performance Call Graph and Method Details view, provides information that helps you determine which methods are slowing down the application’s performance.

Detecting thread bottlenecks
You can detect thread bottlenecks in your application, including thread contentions and thread deadlocks, by collecting Thread Analysis data when profiling. Contentions slow the application's performance, and deadlocks bring execution to a halt.

Monitoring code coverage to detect untested lines and methods
You can determine which parts of your code were not exercised during a profiling run by collecting line and method level code coverage data. Data from multiple runs, multiple applications, and multiple hosts is not only preserved in separate files, but is also merged into composite coverage data sets.

Collecting run-time data with user-defined probes
User-defined probes are reusable Java code fragments that you can write to collect detailed information about a program as it runs. You can insert compiled probes at various places in your code, and collect run-time information about objects, instance variables, arguments, and exceptions.

Log and Trace Analyzer
The Log and Trace Analyzer and the Profiling Tool are open-source data collection and analysis tools.

Generic Log Adapter
The Generic Log Adapter is an open-source framework that lets Eclipse plug-in programmers write Java-based log parsers to translate log files into Common Base Event format.

Statistical Console
The Statistical Console provides extension points for user interface features that let users collect data into statistical models.