用DELPHI和COM+开发,COM+有四个组件,客户端用DCOMCONNECTION连接到COM+,COM+已配置为POOL OBJECT,且已设为MULTI THREAD。
在处理中,发现COM+占用的内存直线上升,处理了十个单据,居然已到900M内存!最终出现“内存不足”错误,此时看任务管理器,发现DLLHOST大概占用120M内存。
如果把该DLLHOST强制结束,或者是客户端退出,COM+的内存可以正常释放,查看系统已用内存,是200M,应该比较正常。
请有经验的朋友帮我,不胜感激!
路过的朋友,请帮我顶一下,感激!
在处理中,发现COM+占用的内存直线上升,处理了十个单据,居然已到900M内存!最终出现“内存不足”错误,此时看任务管理器,发现DLLHOST大概占用120M内存。
如果把该DLLHOST强制结束,或者是客户端退出,COM+的内存可以正常释放,查看系统已用内存,是200M,应该比较正常。
请有经验的朋友帮我,不胜感激!
路过的朋友,请帮我顶一下,感激!
连接、使用数据库后应尽量快速释放掉。
另外,你是否每一次查询、提交均使用不同的THREAD。
还有,如果数据库中的数据量非常大,而你的COM+不加过滤就读取过来,估计内存也会吃紧。
服务器端:
静态的控件只有一个全局的ADOCONNECTION,当COM+的DATAMODULE在ACTIVE时,ADOCONNECTION设为OPEN,DATAMODULE在DEACTIVE时,ADOCONNECTION设定为CLOSE。而每次用的QUERY是动态创建的,QUERY用完后,用try...finally将之立即FREE的。COM+与客户端都是用CLIENTDATASET的数据集DATA以OLEVARIANT传递。客户端:
用四个DCOMCONNECTION放在数据模块中,分别连接到COM+不同的组件中,
试试去微软网站找ADO的补丁。。