Concepts

Performance analysis of a running Java application is a broad task which may involve finding algorithmic bottlenecks, detecting memory leaks and looking for concurrency-related problems which all may slow down your program.  In other cases, the primary goal of profiling is simply finding a hotspot which may be optimized or rewritten in native code.

Like debugging, profiling adds some additional overhead to performance of the profiled application.  This overhead may vary in wide ranges — from nearly zero to very high, depending on the nature of the application and methods used to profile it. Usually, a program being developed suffers from only one of symptoms described above — trying to detect all of them at once may lead to unacceptable performance overhead, and that is why setting up the CodePro Profiler properly is important.

Telemetry
Profiler Agent
CPU Profiling
Memory Profiling
Thread Profiling
Snapshots