VB6
SQL SERVER2000
WINDOWS SERVER2000没有装升级包的程序长时间运行后,占用内存稳步上升,VB+SQL SERVER2000,你还碰到过这样的啊 ?
帮我考虑一下,占用内存过多后,先是WINDOWS提示虚拟内存不够用了,再过一段时间,程序就要翘了,大概3,4天的时间。请问,大虾在程序开发过程中可曾碰到过这样的问题,
查文档发现,在向一个表中增加记录时,如果中途取消了,该内存不会被释放恳请给予指导,或共同切磋
QQ:28338134
同行也可聊聊其他相关技术:)一次只能给100分,如果嫌少,可重开贴专门给分:)

解决方案 »

  1.   

    一般情况我都会是建立局部对象来使用的,在超出范围以后,即使我没有使用set recordset=noting 对象也应该自动的消失,我看过一点点的C++书,了解一点点内存泄露的知识,可是在VB里好象没有这方面的问题的啊。从实际情况来看,确实是VB存在内存泄露这方面的问题(也许VB里不叫“内存泄露”),不大可能是其它随机情况发生,楼上的你是做什么的?使用什么工具来的?
      

  2.   

    如果排除了vb的问题,不妨考虑一下sql程序的设计是否有问题。在向一个表中增加记录时,如果中途取消了,该内存不会被释放,可以考虑将定义一个事务,一旦更新失败,马上rollback transation,也许会有效果哦
      

  3.   

    我有VB对内存和DLL的操作教程
      

  4.   

    cfankings(极品菜鸟) 有的话,还不给大家一起分享分享啊,给我一份,OK?[email protected]
      

  5.   

    我认为是资源没有释放所致set object=nothing还有就是在编程的时候,注意变量和记录集的数据量,不要太大,不用的时候就关毕
    请楼主仔细检查你的程序吧
      

  6.   

    我做了一个小小的时间发生器在我的主服务器上,已经连着运行1个多星期了,没一点儿事。
    机理是一秒钟向一个数据库写一次主服器时间以便下面的客户机能读到当前正确时间(现在我知道这样的程序实在多余了,SQL本身就有个GETDATE ( ))。
    所以我想,正确的管好自个的变量,应该不会有什么问题的。
      

  7.   

    同意楼上各位所说的补充一点
    set rsRecordset.close
    即时释放各种资源是必要的
    我的客户程序不是24小开的但服务器端是
    一个多月了没有发现问题
    我用的是MTS控制的
      

  8.   

    补上,MTS在事务完成或断开后,mts的对象连接池,会保持最近打开的连接对象,在新建的相同的连接对象时,可以重新共用mts对象连接池的连接,以便减少所占资源
       另外建议
          1.如果rs需要批处理提交时,在建对象时,先释放连接(set rs.activeconnection=nothing),在提交前,set rs.activeconnection=myconn
          2.如果rs需要立即更新时,可能的话,先释放rs对象的联接,用联接进行提交(如,update table,insert into table)
          3.所有对象在程序结束前,必须关闭及释放
      

  9.   

    一般情况我都会是建立局部对象来使用的,在超出范围以后,即使我没有使用set recordset=noting 对象也应该自动的消失VB中,有时即使超出范围,但由于对象传递或其他原因,会造成对象不能真正销毁,即使你set nothing.一个对象必须把所有引用的子对象全部释放后才能被真正释放.
    可以察看MSDN上有相关资料
      

  10.   

    一般情况我都会是建立局部对象来使用的,在超出范围以后,即使我没有使用set recordset=noting 对象也 不会 自动的消失。
    即使建立局部变量,当关闭对象时,必须recordset.close或set recordset=noting,你可以做一下实验验证一下
      

  11.   

    一般的话应该是楼上各位所说的那样。
    **************我有VB对内存和DLL的操作教程
    email一份给我 [email protected]
      

  12.   

    看这个帖子学了不少东西。
    给楼上一份的,请顺便来这里一份。
    [email protected]
      

  13.   

    [email protected]
    谢谢,
    我也要
      

  14.   

    打开大量的表,每个连接用完了以后要释放。set conn = nothingset rs = nothing这样才是好习惯。
      

  15.   

    为什么????
    我点击管理后准备要结贴可是却看不见 “hsn1982(我 爱 猫 猫)”的 名字,为什么?
    我想给分都给不了???