Object Type

The Object Type view presents the objects on the heap and their position within it, just as in the Cell Type view, but by tagging them with their C++ type name so that you can easily recognize the objects from your own code. Determining an object’s type for display is usually possible for the majority of objects in the heap, but not for them all. An object’s type can usually be determined if

If the object type cannot be determined, but there is a unique referrer for the object type, or if all referrers are of the same known type, [Part of XXX] is displayed, where XXX is the type of the referrer.

Otherwise, [Unknown] is displayed.

A virtual function in a class means each instance of that class will contain a vtable pointer. The vtable pointer can be used, in combination with the symbolic information provided at startup, to determine the name of the class associated with the vtable for presentation. Symbian’s CBase defines a virtual destructor, so all conventional C-prefixed classes in Symbian will have a vtable and so be identifiable in this way.

There are a number of possibilities, but an [Unknown] or [Part of XXX] object is typically either a raw (non-descriptor) data buffer, or sometimes a T-class allocated on the heap. Because such an object is often owned and encapsulated by an identifiable C-class, one effective strategy for identifying objects, which type cannot be determined, is to use the incoming reference information Heap Analyser constructs. If an otherwise unknown object type has this reference information, it is displayed in the view as [Part of XXX], where XXX is the type of the referrer. In addition, if you right-click an object and select Go to… > Incoming reference, the context menu will display the types of the objects that refer to the object. In fact there are a number of ways of visualizing object reference relationships available from the right-click context menu, including drawing the link relationships between objects as an overlay of dotted lines (right click and select Relationships… > Incoming > Breadcrumbs).

Colours are chosen arbitrarily on a type-by-type basis in this view, with the exception of descriptors (Yellow), [Unknown] and [Part of XXX] (Red), and free space (Blue). The colour allocation can be viewed and refined by clicking Set Filters. This filter settings panel is also useful for focusing down on just object types of particular interest; click Enable None, then selectively enable just the types you are interested in. To get an overview, select View > Size > Small.

Related references