Bha*_*rat 2 progress-4gl openedge
我正在使用下面的查询,它有句柄,但即使我删除/不删除句柄的对象,我也看不到任何反应。但每个人都说最后总是删除对象。为什么我们需要删除它们?如果我们不删除它们会发生什么?我们怎么看?
finally:
if valid-handle(hQueryTest) then delete object hQueryTest no-error.
if valid-handle(hQuerytestvalue) then delete object hQuerytestvalue no-error.
end finally.
Run Code Online (Sandbox Code Playgroud)
OpenEdge 根本没有针对基于句柄的对象的基于引用计数的垃圾收集器。因此查询句柄指向的对象将永远保留在 AVM 的内存中。如果是在应用程序服务器上,则应用程序服务器进程的内存消耗可能会略有增长,但会稳定增长。
OpenEdge 有 WIDGET-POOL 的概念,可以支持内存管理。
您可以检查 DynObjects.* 日志条目类型以深入了解动态对象(基于句柄或基于类)的生命周期。