于ADO访问数据库内存泄漏的问题,请教高手,UP有分 ( 积分: 200 )

  • 主题发起人 主题发起人 sbzldlb
  • 开始时间 开始时间
S

sbzldlb

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个长时间运行的程序中,由于各种原因,频繁的创建ADO控件,频繁的释放ADO控件,造成了内存泄漏,程序运行一段时间后,发现程序所占有的内存不断增加,请问如何解决这个问题
请不要告诉我,避免重复创建和释放,希望能有其他的解决方法。多谢了
 
有时 运行不了多长时间就会出错或出异常或程序自动退出
 
是不是打开数据集没关闭啊,是不是用到定时器了,频繁的刷新数据库啊,用的数据库是什么啊,创建索引了吗?
 
access 我是在dll里创建 的
一般创建后, 然后运行一个sql语句,然后就 freeandnil

我现在测试的是1秒创建 and free
 
你觉得你的测试代码没问题?我敢肯定,ADO肯定没这问题。
 
我2天,可能创建 14万个 adoquery 然后 销毁 14万个

不知道这样的创建量,会有问题吗?
 
140万都没问题。只要你能确保正确的free.
唯一担心的就是中间出错,导致无法正确的free.
 
为何不先建一个ADO 模板,再进行调用和Free,楼主有试这个方法吗,我不建议频繁地创建和Free。
 
为何不先建一个ADO 模板,再进行调用和Free]
------------------------------
那我也要频繁的创建吧
 
找个调试工具如:Eurekalog调试看看是哪里泄漏
 
用了,段时间不出问题,除非开他几天才会哦
 
为什么要频繁的创建呢。如果是为了更改查询可不可以经常的打开、关闭呢
例:

procedure querysql(sql:tstrings)
{
if adoquery1.active then
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.assgin(sql);
aoquery1.open;
}
 
不能用一个ado ,因为我以前试过了,我的数据量很多,如果全用一个,几个小时就会出问题,必须分开做,而且到后期,我可能1次查询几十万条,如果一直是一个的话,问题可想而知啊。
 
不能用一个ado ,因为我的数据量很多,如果全用一个,几个小时就会出问题,为什么会出现这种情况呢?
 
以前我也碰到过ADO内存泄漏,不过现在已经解决了.主要是因为ADO打开以后,不断的添加数据引起的.
还有你可能在几个线程中同时使用一个ADO线程引起的"几个小时就会出问题,"
 
dennyshao001,??

那你后来怎么解决的呢?
 
我的数据操作全部是在一个线程里完成的

数据量很大,1分钟可能要128条数据,可能更大

而且要即时的检查数据,所以我要频繁的创建销毁数据控件

不知道大家是怎么解决这个问题的呢
 
后退
顶部