程序运行了3个小时突然没有相应  感觉不像是内存泄漏 是不是进入了临界状态?CPU的虚拟内存增加了一倍左右,CPU的使用率为0

解决方案 »

  1.   

    内存泄漏时CPU使用占很大吧?是吗?我这里为0,应该是死锁吧
      

  2.   

    1、我在一个CDC创建时会进入临界状态,释放CDC时离开临界状态。
    2、在打开数据库时进入临界状态,关闭时离开临界状态
    3、程序开了一个线程专门用于串口接收数据
      

  3.   

    估计死锁了
    把每个Lock()后面都查一边有没有UnLock()
    如果Lock() UnLock()之间忒长,就把Lock() UnLock()拉近些,
    反正多来几下Lock()/UnLock()也没什么影响
      

  4.   

    记录一下操作log,看看最后进行的是什么操作
      

  5.   

    程序中可能new的对象或变量没有delete掉,或者malloc申请的内存没有free掉,程序运行时间较短的时候可能没什么问题,但是时间一长,如果申请的内存没有释放就会出现死机的情况了。。
      

  6.   

    我在自己电脑上运行程序 3个多小时了 也没死机,但拿到设备(一体机)上运行,几个小时就死了,设备也是PC机,内存比我的PC小,我本想用debug版本调试看能不能找到错误的地方,可能运行了这么久都还没有死。VS2008本来就可以检查一定的内存泄漏的。  我自己也检查好几遍了,没有发现。实在是不知道怎么办啊。
      

  7.   

     CoInitialize(NULL);                        //访问comm库
    _ConnectionPtr pConn(__uuidof(Connection));//定义对象的同时进行初始化 pConn->ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Data Source=wanglianhua;User ID=sk_medical;Initial Catalog=Infusion_Station";
    pConn->Open("","","",adConnectUnspecified);  str_inquiry.Format(L"select *from patient_base_info where is_cur = '%s'",L"1");  
           pRst1 = pConn->Execute((_bstr_t)str_inquiry , NULL , adCmdText);
    while(!pRst1->rsEOF)
    {
                    _RecordsetPtr pRst1(__uuidof(Recordset));
                    pRst1 = pConn->Execute((_bstr_t)str_inquiry , NULL , adCmdText);
    while(!pRst1->rsEOF)
    {
    CString strFlag = pRst1->GetCollect("flag");
    CString strTime = pRst1->GetCollect("time");
    CString strSum = pRst1->GetCollect("SumValue");
    CString strStatus = pRst1->GetCollect("Status"); DealUrineDBData(nFlagIn,strStatus,strFlag,strTime,strSum,
    m_strTimeFirst,m_strTimeLast,strSumValueFirst,strSumValueLast,
    nTempUrineSumValue); pRst1->MoveNext();

    }
    pRst1->Close();
    pRst1.Release();
           }
    pConn->Close();
    pConn.Release();
    CoUninitialize();
    这是我数据库的一段程序,大家看看有没有什么错误呢?
      

  8.   

    CoInitialize(NULL); //访问comm库
    _ConnectionPtr pConn(__uuidof(Connection));//定义对象的同时进行初始化pConn->ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Data Source=wanglianhua;User ID=sk_medical;Initial Catalog=Infusion_Station";
    pConn->Open("","","",adConnectUnspecified);  str_inquiry.Format(L"select *from patient_base_info where is_cur = '%s'",L"1");   
      _RecordsetPtr pRst1(__uuidof(Recordset)); 
      pRst1 = pConn->Execute((_bstr_t)str_inquiry , NULL , adCmdText); 
    while(!pRst1->rsEOF)
    {
    CString strFlag = pRst1->GetCollect("flag");
    CString strTime = pRst1->GetCollect("time");
    CString strSum = pRst1->GetCollect("SumValue");
    CString strStatus = pRst1->GetCollect("Status");DealUrineDBData(nFlagIn,strStatus,strFlag,strTime,strSum,
    m_strTimeFirst,m_strTimeLast,strSumValueFirst,strSumValueLast,
    nTempUrineSumValue);pRst1->MoveNext();}
    pRst1->Close();
    pRst1.Release();pConn->Close();
    pConn.Release();
    CoUninitialize();
    这是我数据库的一段程序,大家看看有没有什么错误呢?
    不好意思,前面发错了