在Delphi中操作Sap对象造成内存增长的原因
曾经在我的一个Delphi开发项目中,我遇到过这样一个问题,困扰了我相当一段时间。 我将SAP对象封装成了类,并在一个线程中调用。也就是说,SAP对象的创建释放全部是通过代码来操作的,不同于直接将SAP控件拖放到窗体上。 线程每执行一次SAP读写操作,内存就增长24K-32K。 关键代码 下面是SAP类的部分关键代码,含有SAP对象的创建和释放。 procedure TSapSvr.Open(FunctionName: string); begin if fConnect.LogOn(0, True) then begin fFunctionName := FunctionName; fFunction := fSapFunctions.Add(FunctionName); end; end; procedure TSapSvr.Close; begin fFunction := Unassigned; fSapFunctions.ReMoveAll(); fConnect.LogOff; end; 我就是在线程中不断的调用Open和Close函数,你能看出问题出在哪里吗?你肯定想不到的。 解决方案 我也是在无意中发现的,不过我现在还不知道原因,告诉你解决的方法吧!那就是将 fSapFunctions.ReMoveAll(); 删除!!! 结束语 你能告诉我原因吗? 附件中我提供了我封装的SAP类,分享给大家,如果发现问题,请转送一份文件给我!