●●●记录查询之后内存泄漏的问题●●●

步履人生 2006-08-27 05:22:11
我采用VC+Ado +sql server 每查询一次都会有4K的内存增加,如何解决?

我采用的是Open()方法执行sql语句,然后查询完之后使用Close()关闭,但是还是有4K的内存在不断增加,郁闷。
...全文
366 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchen118 2007-03-11
  • 打赏
  • 举报
回复
查个20000条数据试试,看看大数据量情况下是不是内存猛涨,如果是,那么可能是你的程序有内存泄漏,即便是不连数据库因该问题也存在。我想应该不是SQL SERVER的问题吧。还有,给你推荐个工具,Purify,IBM公司的专业内存泄漏检测工具,很方便的,不信试试。呵呵。
步履人生 2007-03-08
  • 打赏
  • 举报
回复
自己顶一下吧,希望高人指点啊
步履人生 2007-03-03
  • 打赏
  • 举报
回复
我在这里补充一句,我的Recordset设置的是一个全局变量,我想在使用它执行Select方法取出我所要的数据之后能清空检索出的内容所占用的内存
步履人生 2006-11-10
  • 打赏
  • 举报
回复
ok, i will try to find the answer, thanks.
MajorVon 2006-11-08
  • 打赏
  • 举报
回复
操作系统是延缓评估的,
等一个就会释放内存,长占不放,就是泄漏了
davidwang1207 2006-11-07
  • 打赏
  • 举报
回复
ameng() 说的是对的. 是SQL SERVER 的缓存问题.自己开任务管理器上可以看到内存都是被sqlserver.exe加上的.如果你的SQL内存给的是动态的,并且足够大那么 .......++++++++++.
建议用高速缓存可以及时释放内存.
借个地方问个问题:
我给SQL SERVER 动态分的内存最大是25M ,可是.他居然用了我37M 才停止增长.WHY ???
ronk 2006-11-07
  • 打赏
  • 举报
回复
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset ;

在确认所有数据库操作都结束后,

先释放RecordsetPtr的资源,再释放connectionPtr 占用的资源:

m_pRecordset.Close();
m_pRecordset = NULL;

m_pConnection.Close();
m_pConnection = NULL;
davidwang1207 2006-11-06
  • 打赏
  • 举报
回复
遇到同样的问题。 顶.
  • 打赏
  • 举报
回复
试试改写成这样看看:

_RecordsetPtr m_pRecordset;

///////////////////////////

m_pRecordset.Close();
m_pRecordSet = NULL;

~~~~~~~~~~~~~~~~~~~~~~~~~
  • 打赏
  • 举报
回复
如果你用的是Connection.Close,那么有一点需要注意.

在对打开的 Connection 的操作结束后,可使用 Close 方法释放所有关联的系统资源。关闭对象并非将它从内存中删除;可以更改它的属性设置并在以后再次使用 Open 方法打开它。要将对象完全从内存中删除,可将对象变量设置为 Nothing。

如果你用的是Recordset的Close方法,那我就搞不懂了,如果是后一种情况,那么写日志看操作是否都成功吧.
步履人生 2006-11-01
  • 打赏
  • 举报
回复
pity, isn't it?
why no one can solve this problem?
步履人生 2006-10-29
  • 打赏
  • 举报
回复
any one can solve the problem?

i have searched so many articles, but no answer i have got till now.

depression.
pioneer_public 2006-08-28
  • 打赏
  • 举报
回复
借个地方:
(为什么提问点了没有反应呢?)


CRecordset not found in m_pDatabase->m_listRecordsets

这个警告如何解决啊?

解决了开帖给分
ameng 2006-08-27
  • 打赏
  • 举报
回复
如果涨到一定程度不再变化,那可能是库缓存等问题。如果一直在增长可以调试运行。用F5启动,内存增长几次后关闭程序,看vc调试输出窗口,如果有内存泄露是会有提示相应泄露源文件以及代码为之的

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧