HRESULT hr=pApp->m_pRecordset->Open(sql.AllocSysString(),pApp->m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
        if(!SUCCEEDED(hr))
{
  AfxMessageBox("´出错");
  return false;
}      if(pApp->m_pRecordset!=NULL)
{
  pApp->m_pRecordset->Close();

         }说明:pApp->m_pRecordset,pApp->m_pConnection都是在程序加载时初始化的,我定时2秒钟去打开和关闭一个记录集;程序执行了100次的时候,内存大概增加了80K,由于系统是要24小时在线的,请问各位出现这种情况的原因是什么啊???????
     项目调到这里卡住了,测试了一天,还是没有啥进展啊???   由于记录集是在程序启动时::CoInitialize(NULL);
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");//´´½¨Connection¶ÔÏó
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=m_data.mdb",
"","",adModeUnknown);


}
}
catch(_com_error e)/
{
CString errormessage;

AfxMessageBox(errormessage
return FALSE;
}
m_pRecordset.CreateInstance(__uuidof(Recordset));创建的,应该不会有内存增加才对啊????请大家帮忙,在线等!!!!!!!    

解决方案 »

  1.   

    pApp->m_pRecordset,pApp->m_pConnection
    用完close一下,再打开使用...
      

  2.   

    我close了,但内存还是一直在跳动,是不是数据库的原因啊
      

  3.   

    你是否调用过pApp->m_pRecordset->Release(); 一般来说,刚开始内存会增加,但增加到一定值就会稳定下来,你要长时间观察一下。
      

  4.   

    [Quote=引用 3 楼 vieri_ch 的回复:]
    你是否调用过pApp->m_pRecordset->Release();一我是程序启动的时候定义的 m_pRecordset,m_pconnect 是不是我只要在程序退出的时候pApp->m_pRecordset->Release();啊,而在定时处理中只需要close 是不是啊????????
      

  5.   

    不是,->Release()一般是不调用的。你的问题,我觉得应该观察内存是否增长到一定数字就不变化了,当然是在记录集返回的数量一致的情况下,时间再久,也不会再怎么增加。如果是这样,就是正常的。如果时间久了,仍然在不断地增加
      

  6.   

    那才算真正的存在问题,从代码上看不出太多线索。
    只是,把recordsetptr,作为类的成员,一开始就初始化,并反复重用,不太合适。一般都是随用随CreateInstance
      

  7.   

    内存碎片么,Windows系统里面出现这种情况很正常
      

  8.   

    实际上不光是内存增加,ACCESS库本身也会增加,不过如果增加不明显的话(1天1M)可以忽略的,你可以借维护的时候重启一下程序的,如果实在需要可以编辑一个监视程序,定时关闭开启这个写库程序就行了
      

  9.   

    感觉是m_pRecordset.CreateInstance(__uuidof(Recordset)); 这句引起内存问题的。既然反复打开就用局部变量吧,或者只调一次m_pRecordset.CreateInstance(__uuidof(Recordset));
      

  10.   

    access本身增加那就悲剧了
    access删除并非真的删除
    还要压缩数据库才行
    手动的话是在access工具菜单中选择
    用代码的话好像是IJet什么的,手边没代码,你可以在网上搜搜看
      

  11.   

    access本身没有服务器的啊,打开的话access是不是也要消耗我应用程序的内存啊,如此一来随着数据库的增大,内存增大岂不是必然的啦!!!!!!!??????????
      

  12.   

    楼主,我也遇到了同样的问题
    通过ADO的方式写ACCESS,没存不断的增加,增加到一定的程度就基本不怎么变化了;
    不知道这是不是一个问题,楼主如果有解决方法的话,可否告知一下,谢谢:)