热情软件屋

 

发现自己的程序占用了太多的内存


编号:QA004214
建立日期: 2001年5月24日 最后修改日期:2001年5月24日
所属类别:

江雯:
    操作系统:windows Me & Windows NT 5.0
    编程工具:VB6.0企业版
    问题:我想问一下关于应用程序优化的问题,我不想等到程序写完了,才发现自己的程序占用了太多的内存。本想用个API将进程隐藏起来可这不是办法,虽然软件是免费的,但我要对程序负责。现在除了菜单,界面部分已经差不多了。我将其编译成可执行文件并运行,可结果吓死我了,用Windows 2000 的任务管理器查看 它占用了3600Kb 可在显示几个窗体后内存占用竟高达 8300Kb,我已经在程序里尽可能的使用控件组了,PictureBox控件的使用也未超过20个。我在用Bitblt搬完图以后将都加入了这条语句AutoRedraw =False,在QueryUnload事件里加入了PictureBox=Loadpicture(""),Set frm-Nothing 不知这2条语句会不会在某个窗体卸载时释放一些内存。还有没有别的办法来减小内存的使用。最后我想问一下有什么软件可以准确的测试出软件的内存占用率,及CPU占用率。Windows 2000 的任务管理器好象反应迟钝。

回答:

    请检查以下几点:
    1、为了减少内存,请尽量在用完一个窗体后马上把这个窗体Unload掉,而不是使用Hide方法,而且,Unload语
    句必须在窗体外部执行,比如说:
    MyWin.Show
    ……
    ……
    ……
    Unload MyWin
    同时你要保证这个窗体中的所有控件此时都没有被别的对象引用。具体请参考Msdn中的对象生存期部分内容。
    如果QueryUnload事件根本就不执行的话,在事件里加入什么都没用。
    2、如果你的图太大,那占内存多也是没有办法的事,再加上第一条的情况的话,就更多了。
    3、如果有可以重复使用的控件和变量,请不要再使用新的。
    4、检查申请的临时内存是不是在用完后都归还了,尤其是在使用了Bitblt之后。
    5、VB有一些会浪费内存的BUG,要是碰上,就只能等补丁。
    注意了以上几条,内存的使用可以降到最低。

此问题由fatworm回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio