我程序里有个窗体上东西比较多,占用内存较大,但我unload ,set nothing 以后内存并没减少,怎办

解决方案 »

  1.   

    这可能是VB的问题吧,我以前也遇过,CPU100%
      

  2.   

    不一定要窗体上的组件,你使用的所有内存都要在合适的时间释放。
    对于用户对象和内核对象,在不使用时一定要及时调用CloseHandle,减少引用计数,这样在该对象的引用计数减为0时,系统会把内存释放得很干净。
    类似的情况还有很多,楼主必须非常清楚自己所使用的每块内存的生命期。还有可以通过改变程序的实现方式来减少内存占用量,尽量减少程序依赖的DLL。
    比如ShellExecuteEx和CreateProcess,两个函数都可以实现启动进程,但ShellExecuteEx函数在shell32.dll里,而如果你的程序中只使用了shell32.dll中的ShellExecuteEx函数,那么装载器就得单单为了ShellExecuteEx把shell32.dll加载到内存里,这样就是浪费。而CreateProcess在kernel32.dll里,这是不就浪费内存的。任何应用都会加载这个DLL。再有就是比如像MSXML这样的组件。微软的XML解析器在解析稍大一些的XML文件时就会占用较多的内存。这些都是要考虑的。事实上,要减少内在的占用量,不仅仅是几个什么unload,set xxx = nothing 就可以解决问题的,应该从整个系统全方位的考虑。