Allocation Profiler Tutorial: 6 - Analyzing Results of Unmanaged Samples

Applies to AQTime 8.81, last modified on January 18, 2022

Let’s take a look at the results we obtained in the Report panel for the VCL application (when the Classes Data category is selected in the Explorer panel).

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

The only class for which the Live Count column is not zero is TObject. This means there are objects that still exist in memory after the application finished. To view the list of corresponding object instances, double-click the Objects category in the Explorer panel. As you can see, there are as numerous object instances as reported in the class list (100 instances of the TObject class).

Profiling results (the Objects category is selected)

Click the image to enlarge it.

Profiling results (the Objects category is selected)

Click the image to enlarge it.

Profiling results (the Objects category is selected)

Click the image to enlarge it.

If you run the Allocation sample application, the profiling results of the Classes Data category will look like this:

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

Profiling results (the Classes Data category is selected)

Click the image to enlarge it.

As you can see, the Report panel lists two classes: C++ native memory and CHandleMap. The latter class is used to implement the mapping mechanism of Windows object handles, and is not interesting to us. Let us focus on the C++ native memory class, it corresponds to one or several unreleased memory block(s) which were allocated by the profiled application. The number of these blocks is given in the Live Count column. When the Objects category is selected in the Explorer panel, the Report panel will list the corresponding number of memory blocks. In our example, we have two blocks marked as C++ native memory.10 and C++ native memory.38. The Creation Call Stack pane displays a stack of function calls that led to the creation of an instance selected in Report. The top function is the very function that created the given object. For example, for the Allocation application we have the following call stack:

Profiling results (the Objects category is selected)

Click the image to enlarge it.

Profiling results (the Objects category is selected)

Click the image to enlarge it.

Profiling results (the Objects category is selected)

Click the image to enlarge it.

Double-clicking a function displays its source code (if it is available) in the Editor panel.Selecting a function and choosing Show Source File from the Edit menu displays the function’s source code in Visual Studio’s Code Editor.Double-clicking a function displays its source code (if it is available) in Embarcadero RAD Studio’s Editor. (The link to source code is only available if your application was compiled with debug information. See How AQTime Profilers Use Metadata and Debug Information. In addition, the path to the source files must be specified in the Project Search Directories or Search Directory dialog.)

Note: If the call stack is empty, most likely, you have not added any elements to the Collect Stack Information pane or you have not selected any stack area in this pane. For more information, see Specifying Modules to Be Included Into the Call Stack.

Another possible reason is the absence of debug information for profiled modules that have been added to the Collect Stack Information pane. For more information, see How AQTime Profilers Use Metadata and Debug Information.

Using the Summary panel, you can review the summarized statistics on the entire profile run. For instance, for the VCL application:

Profiling results in the Summary panel

Click the image to enlarge it.

Profiling results in the Summary panel

Click the image to enlarge it.

Profiling results in the Summary panel

Click the image to enlarge it.

Prev

See Also

Allocation Profiler

Highlight search results