最近做了一个项目,出现内存不释放的问题,希望大家帮忙!我先说说现象!程序正常运行,线程什么的,该关闭也关闭了,但是内存只增不减,但是变态的地方出现了,如果我把窗体最大化一下,或者最小化一下,内存马上就释放掉,如果窗体不动,内存就不释放。原因分析不出来……还有,我为了弄明白问题,我新建一个项目,什么都不做,直接点运行。发现内存会吃到5M大,如果最小化一下,马上就变成了几百K,然后在最大化一下,发现内存最多占用1M大左右。当然,我知道我做的项目肯定有问题,但怎么解决呢?我看过很多东西,都释放掉了,怎么还站内存呢?非要窗体刷新下才没么?
十分不理解,请高手赐教!!!

解决方案 »

  1.   

    是D7吗?
    有没有尝试用FASTMM来找一下泄露的语句
      

  2.   

    FASTMM是全称么?我下载一个看看,关键变态的地方,是窗体最大化或者最小化一下,内存就没了,如果窗体不动,就只增不减。如果是内存泄漏,应该不是这样的吧!
    是D7!
      

  3.   

    从哪看的?taskmgr.exe进程标签中的“内存使用”栏?你以为page out就是“释放内存”么?
      

  4.   

    我没这么认为,但是,的确是这样的事情!
    窗体只要最大化或者最小化后,内存占有还原成正常的大小了啊!
    这个应用程序存在内存泄露. 小内存块的泄露有 (不包括已按指针注册的预知泄露):5 - 12 字节: TIdThreadSafeInteger x 1
    21 - 36 字节: TIdCriticalSection x 2这个是INDY 10自带的内存泄漏?不需要考虑的么??
      

  5.   

    不大明白LZ指的不释放到底是什么情况
    如果只是窗体变化后,内存占用也变化,应该是正常的啊,这是windows的内存管理机制。
    delphi下随便一个form都会占点内存的,如果不是内存一直持续不断的往上增的话,应该没什么问题
      

  6.   

    是这样的,我的项目,刚启动的时候,只占8M大的内存(这个时候最大化,最小化后,内存会到2M左右,忽略不计)
    但是,一直使用下去,内存会吃到上百M大,这个时候,如果你最大化,最小化下,内存还能释放到几M大&&&&
      

  7.   

    你在哪个地方看的?是不是windows任务管理器?看不懂话么?
    如果是的话,你就别继续瞎猜了