【发布时间】:2012-12-13 22:04:45
【问题描述】:
我有一个使用 RemObjects SDK 在 Delphi XE 上创建的 web 服务,并且发布了一个函数来完成他的工作需要使用 com 对象(特别是 Ado 使用 DMO 连接到数据库)。我发现当我多次调用此函数时,使用 Web 服务的内存会急剧增加。
内存泄漏的原因是为com对象保留的内存没有释放。
我必须做些什么来解决这个问题?
谢谢
代码:
constructor TA.Create;
begin
inherited Create;
oServer := CoSQLServer.Create;
end;
destructor TA.Destroy;
begin
oServer := nil;
end;
声明
class function CoSQLServer.Create: _SQLServer;
begin
Result := CreateComObject(CLASS_SQLServer) as _SQLServer;
end;
【问题讨论】:
-
您如何测量内存使用情况?解决方案似乎很明确 - 您需要释放不再使用的 COM 对象(或者干脆不要全部创建它们;创建一次并重新使用它们)。
-
webservice 上的每个调用都是一个独立的线程。我如何实现 COM 对象?我试图将对象设置为零,但它不起作用
-
我无法回答这个问题,因为您的问题中没有可用于确定答案的代码。
-
什么是
CoSQLServer?我知道它是一个 COM 对象,但它指向的 COM 类是什么? -
导入Microsoft SQLDMO对象库的COM对象
标签: delphi com memory-leaks delphi-xe remobjects