DocumentationJava Profiler 7.5 HelpCPU profilingRecording CPU information. Sampling and tracing.
previous      content      next
Recording CPU information. Sampling and tracing.

First, connect to the profiled application.

CPU profiling controls in the toolbar

The toolbar contains the following CPU profiling controls:

CPU usage graph

The "CPU" tab shows live CPU consumption statistics.

A very useful and unique feature of this graph is that the telemetry information is remembered inside the profiler agent. This allows you to connect to the profiled application on demand and discover how the application behaved in the past.

CPU profiling

  • Start measuring

    To begin obtaining profiling results, start CPU measuring when your application requires it.

    You can choose either of two available measurement modes: sampling or tracing.

    Time

    Invocation Count

    Overhead

    Accuracy

    Required Java version

    Sampling

    Available

    Not available

    Negligible

    Average

    Java 1.3 or newer

    Tracing

    Available

    Available

    Depends on current filter set

    High

    Java 5 or newer

    Sampling

    When sampling is used, the profiler periodically queries stacks of running threads to estimate the slowest parts of the code. No method invocation counts are available, only CPU time.

    Sampling is typically the best option when your goal is to locate and discover performance bottlenecks. With sampling, the profiler adds virtually no overhead to the profiled application.

    Tracing

    When tracing is used, the profiler instruments the bytecode of the profiled application for recording thread CPU time spent inside each profiled method. Both times and invocation counts are available.

    Although tracing provides more information, it has its drawbacks. First, it may noticeably slow down the profiled application, because the profiler has to instrument the bytecode of the profiled application with special support code. The greater the number of method invocations in the profiled application, the lower its speed when tracing is turned on. The second drawback is that, since this mode affects the execution speed of the profiled application, the CPU times recorded in this mode may be less adequate than times recorded with sampling. Please use this mode only if you really need method invocation counts. Note: Tracing is available only if your application runs on Java 5 or newer, because older JVMs do not provide appropriate means for dynamic bytecode instrumentation. With Java 1.3 and 1.4, only sampling is available.

    After selecting the profiling options, start profiling as follows:

  • Live results

    When profiling is started, the bottom table on the "CPU" tab shows a top-down call tree with calls with all threads merged.

    In case of CPU tracing, both method invocation counts and times are shown. Invocation counts are not cumulative. In case of CPU sampling, method times are shown.

    CPU telemetry provides only basic information. To perform comprehensive analysis, use "Capture performance snapshot".

  • Finish measuring and get the results

    When the task you intended to profile has finished (or has performed for a sufficient amount of time), capture a CPU snapshot with all the recorded information.

    When this is done from the profiler UI, you can open the results for immediate analysis.

    Further topics in this section describe the profiler's UI for analyzing CPU profiling results.

You can start and stop CPU profiling during the execution of your application as many times as you want. When CPU profiling is not running, YourKit Java Profiler adds no performance overhead to application being profiled.

Note: In some cases, it also may be useful to launch the application with CPU profiling already started and/or automatically capture CPU snapshot on exit of the profiled application (see Additional options).

CPU profiling can be performed programmatically with the help of the Profiler API

previous      content      next