为了方便各位前辈们看,我就长话短说了 我写了一个小程序  在VB中调试的时候仅有100k左右的内存占用可是生成EXE以后运行 内存占用 达到2000之多,请问这是为什么??如何可以解决这一问题。谢谢前辈们!

解决方案 »

  1.   

    如果你程序的退出代码用的是End ,有可能会出现你这种情况,End虽然也是代表程序结束,但是并不会从内存中释放资源.. 如果你程序的退出代码用的是 Unload Me,就不一样了,Unload Me 是程序退出并且从内存中释放资源.. 另外检查一下: 
    最后关闭窗口的时候把打开的文件也关闭了吗?? 
      

  2.   

    “小”到什么程度?
    2000K也才2M,这个应该是包括VMM在内的,
    基本上是正常现象。
    在IDE中运行,类似于在VB6的“关照”下运行,
    是解释方式的,这个内存占用肯定还没有算入VMM的。
    只要你的程序在运行过程中,
    内存占用没有“不断的增加”,
    (本来就在不停的扩充数据内存的除外)
    基本上可以认为没什么问题。
      

  3.   

    我找了一个以前写的成品程序调试的时候 大概是2000K左右可是生成exe的时候 内存却达到了6000~8000的惊人占用率为什么调试跟生成exe差距如此之大呢
      

  4.   

    可能是代码逻辑问题,造成申请的内在未能及释放。
    即使在频繁的 申请&释放,正常情况下也是有一定的增长后,就停止增长。
      

  5.   

    如果内存始终在上升,就是有内存泄漏。
    可能
    A)调用外部资源没有释放。
    B)VB对象循环引用时不会自动释放(看 VB 帮助中的 循环引用 索引)
      详细参考 《高级Visual Basic编程(Advanced Visual Basic)》 第六章 循环引用
      

  6.   

    一些内存没有被释放(比如:不用的窗体没有unload,Timer在运行等)。
    如果要知道具体原因,最好把程序挂到网上,便于查找原因。