'Deleted-by-GC' entries in the client log mean slightly different things depending on the object in question:
- If the object is a simple .Net object (e.g. System.Object) 'Deleted-by-GC' means that the OpenEdge AVM has deleted the ABL references to the object, but it still might not have been garbage collected by .Net. The .Net garbage collection may be delayed, but this will happen according to .Net garbage collection rules. See https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals
- If the object is a hybrid class (ABL class inheriting a .NET class), 'Deleted-by-GC' means that the OpenEdge AVM has deleted the ABL references to the object, and it has also been garbage collected by .Net. With hybrid classes the OpenEdge AVM does not delete the ABL side of the object until the corresponding .Net side of the object has been garbage collected. In this case it's possible that 'Deleted-by-GC' entries in the client log are delayed while the AVM waits for the .Net garbage collector to finish.