Identify memory leaks using the LeakCheck class
- Last Updated: February 23, 2026
- 3 minute read
- OpenEdge
- Version 12.8
- Documentation
The OpenEdge Memory Profiler is the preferred method for identifying memory leaks because it is more accurate, as it directly tracks every object at the AVM level. However, you can also gather information about memory leaks from AVM log files by using the OpenEdge.Core.Util.LeakCheck class, as described in the following steps.
- Configure logging for dynamic objects by directing
LOG-MANAGERoutput to a dedicated log file and enablingDynObjects.*logging. - Run the code you want to analyze while dynamic object logging is enabled, so object creation and deletion events are recorded.
- Disable dynamic object logging to limit logging overhead to the targeted code section.
- Parse the generated log file using the
OpenEdge.Core.Util.LeakCheckclass. - Check for detected leaks and, if present, generate a JSON report describing the leaked objects.
The following example shows a simple, self‑contained way to enable dynamic object logging for a
specific section of code and then use the OpenEdge.Core.Util.LeakCheck
class to analyze the resulting log file for potential memory leaks.
|
The report output looks similar to the following:
Note: In this report, line 5 identifies one memory leak. At line 21, a
file name appears along with
“@ 24“ indicating the line in that code as
the source of the leak. In this example, it was an object of type
“Progress.Json.ObjectModel.JsonObject” (line 19), which was
CREATEd (line 28), and reported as a leaked object since it had no
deletion action identified in the log file.