Widget Pools
- Last Updated: December 23, 2025
- 3 minute read
- OpenEdge
- Version 12.8
- Documentation
The Widget Pools view displays a paginated list of all Widget Pools in
the snapshot in a tabular manner, grouped by the Widget Pool type and organized by
Total Memory (KB) in descending order. A Widget Pool is a
memory management tool used in the ABL programming environment to manage dynamic
objects, such as user interface widgets. It helps prevent memory leaks by grouping
related dynamic objects together and ensuring they are properly cleaned up when no
longer needed. The view captures the following types of Widget Pools:
- Unnamed Widget Pool—Created automatically by the AVM for each class or procedure and is
scoped to the created class or procedure, with only one pool per class or
procedure. The AVM automatically manages the lifecycle of an unnamed Widget
Pool.Note: The session Widget Pool also referred to as the Unnamed Session Widget Pool is the default memory container for dynamic widgets when no other widget pool is explicitly in scope. It is implicitly created by the AVM. While the session widget pool lives for the entire session, an unnamed widget pool scoped to a procedure or class is temporary and is destroyed when that scope ends.
- Named Widget Pool—Identifiable by a user-defined name, it allows explicit management and control over its lifecycle, and multiple named Widget Pools can exist within a session.
The list of Widget Pools displays the following columns, which you can select or deselect from
the Primary Column Selection list using the
column picker available in
the table:
column picker available in
the table:| Column name | Description |
|---|---|
| Type | Specifies the type of Widget Pool as either of the following:
|
| Instance Count | Specifies the count of instances of the Widget Pool that exist in memory at the time of the snapshot. |
| Total Memory (KB) | Specifies the sum of memory used by each instance of the Widget Pool. You can use this column to sort the rows. |
Note: The Type column is always visible and cannot be
deselected.
Analyze Widget Pool object set
Expand each Widget Pool to see a paginated list of the objects present under it. By knowing
the number of objects present for a specific procedure in a snapshot, you can
understand how your application manages dynamic UI components and other resources.
When you expand a Widget Pool entry, it displays the following details about the
objects in the Widget Pool, organized by Memory (KB) in
descending order:
| Column name | Description |
|---|---|
| ID | Specifies a unique identifier for the Widget Pool. |
| Name | Specifies the name of the named Widget Pool. For an
unnamed Widget Pool, the column value defaults to either of
the following:
|
| Memory (KB) | Specifies the sum of the memory used (in KB) by the selected Widget Pool object and the memory used by the objects that are scoped to it. You can use this column to sort the rows. |
| Base Memory (KB) | Specifies the amount of memory used (in KB) by the object. |
| Scoped to | Specifies the object that determines the lifecycle of the Widget Pool. The Widget Pool is created when the object is instantiated and cleaned up when the object is disposed. A Widget Pool has many objects scoped to it, and the Widget Pool itself may be scoped to an OOABL or Procedure object. |
All columns are displayed by default. You can customize the table view by selecting or
deselecting columns using the
column picker, available through the Secondary
Column Selection menu.
column picker, available through the Secondary
Column Selection menu.Note: The Name column is
always visible and cannot be deselected.
Analyze Widget Pool object call stack
Clicking an object row opens a panel displaying the Call Stack, which
tracks the sequence of execution of Widget Pool creation in the application. Call
stacks are critical as they help you understand which parts of the application code
were run. To copy the whole stack, click the
copy icon in the title bar. Because you can only view
one Widget Pool at a time, copying the call stack into a text editor creates a clear
and accessible record of the execution sequence for debugging, analyzing, and
collaboration purposes.