[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: Garbage collection for the sake of static temp-tables (in long-running _progres)

Status
Not open for further replies.
T

Torben

Guest
In general for all ABL widgets is the rule you create it you delete it. GC is only for the OOABL objects. (And ABL widgets used inside OO you are also responsible to delete) Widgets include Dynamic temp-tables, dynamic datasets .... From error it seems like you either have persistent procedures with temp-table that are not deleted. Or you have dynamic temp-tables / datasets that are not deleted. Following code check for dynamic buffers, including buffers to dynamic temp-tables. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO. FUNCTION InstName RETURNS CHARACTER PRIVATE (hWidget AS HANDLE): IF VALID-HANDLE(hWidget:INSTANTIATING-PROCEDURE) THEN DO: IF hWidget:INSTANTIATING-PROCEDURE = SESSION THEN RETURN "SessionLevel":U. ELSE RETURN hWidget:INSTANTIATING-PROCEDURE:NAME. END. RETURN "Object or deleted procedure":U. END FUNCTION. hBuffer = SESSION:FIRST-BUFFER. DO WHILE VALID-HANDLE(hBuffer): MESSAGE SUBSTITUTE("Memory usage (buffer) = &1 created in &2 found record size in bytes &3":U, (IF hBuffer:DBNAME <> "PROGRESST":U THEN hBuffer:DBNAME ELSE "TEMP-TABLE":U) + ".":U + hBuffer:TABLE, InstName(hBuffer), hBuffer:RECORD-LENGTH). hBuffer = hBuffer:NEXT-SIBLING. END.

Continue reading...
 
Status
Not open for further replies.
Top