用MFC做了一个基于HTML类的程序,其实只是在里面加了两个类,添加的代码也就1000行,用来玩网页游戏的。但是程序一启动,内存消耗就有100多M,这个虽然不算太多,但是多开几个这个程序的话,就吃不消了,不知道有什么办法减小内存开销?另一个问题是,我在程序运行时,不进行什么操作的话,内存使用量没有什么变化,但是一旦我在上面进行操作(Flash的游戏,就是点击和鼠标移动操作),内存开销会变大,一般对达到300+M,最多一次达到500+M的内存占用了,严重影响性能了,不知道这个是什么原因?MFC的HTML项目会对资源进行管理吗?

解决方案 »

  1.   

    GDI资源也是占用内存的哦, 没有很多画图的操作啊。
      

  2.   


    我这个程序为了和网页游戏保持同步,使用了比较多的Sleep,我设定的时间是20小时,20小时后程序结束,但是一般在6、7个小时内存占用就好几百兆了。如果我把Sleep全部注释掉,程序执行完所有的代码只要几秒钟,内存和CPU根本没有用多少。如果我不把游戏界面打开,直接执行我的代码的话也没有什么问题。而且程序里没有动态创建的东西,都是一开始就初始化好了一些对象,后面使用就行了。现在我觉得是flash的原因,我用360浏览器玩这个游戏,内存占用也会达到3、4百M,这是在操作频繁的情况下。但是一旦停止操作,过一会儿,这部分内存被释放掉,内存占用降到100M左右。而我用MFC写的这个,不知道是由于对内存管理不够好,还是由于flash加载的东西一直被使用,没有释放掉,才导致这个问题。还有一个问题,几个小时以后,CPU占用也变高了很多。
      

  3.   

    多检查一下你new之后,有没有对应的delete
      

  4.   

    楼主可以直接使用 webrower控件嘛
      

  5.   

    哦,呵呵,搞错,应该是循环处理不当,单纯Sleep貌似只卡线程不占内存。
      

  6.   

    如果你只是点击flash就会内存增加,那就是flash问题
    其实很多flash游戏很垃圾的,怪不得乔布斯不支持
    我在玩的开心网某flash,把我的双核2g的cpu都能占满,还是用的chrome浏览器
      

  7.   


    现在可以肯定不是我的程序问题,而是MFC生成的项目对flash管理不好,申请的空间不释放。我用其他360,世界之窗虽然有时也会开销比较大,但是一空闲空间就释放了。我的这个程序,空闲的时候也不释放,导致占用越来越多。可能这个flash本身也有问题吧。