P
Peter Judge
Guest
There are a few approaches you can take. These apply to all AVM/clients Use the DynObjects.* logging type to identify when OO and other objects are created and destroyed. Parse the logs generated to see what isn’t appropriately destroyed. There are knowledgebases and Communities posts on how to do this Do the same for Temp-Tables ; these entries also help you identify when you are unnecessarily passing temp-table data by-value (instead of by-reference) For AppServers, identify the start and end of a request (in activate and deactivate event procedures) the objects, persistent procedure and other stuff that’s in memory. Look at what’s increased in the deactivate, and decide whether that’s a leak. Use the SESSION handle’s FIRST-OBJECT, FIRST-PROCEDURE, FIRST-BUFFER, FIRST-TABLE and any other FIRST-* reference, and “walk the tree” by checking that reference’s NEXT-SIBLING until there are no more valid-handle/valid-objects. Notice that you will need to decide whether additional/remaining references at the end of a request are leaks or not – in some cases there will be objects cached deliberately, which should not be considered leaks. There are some conversations on Communities in this vein. For (3) above, you will have to add ABL code to gather the information; in newer versions of PASOE there are mechanisms to get some of this data without having to write ABL, though the analysis about leak-or-not will be the same. Hth, - peter
Continue reading...
Continue reading...