我做了一个FTP的服务器和客户端的程序,现在已经在正式运行了, 但是内存问题是我的一个心头大患.事前我在客户的服务器上(至强双CPU的HP服务器, 1G内存)进行大流量的文件, 直到把它的20G的硬盘撑满为止, 没有出现文件传送错误, 但是最后程序退出的时候, 内存好象有点问题, 程序表面上退出了, 但是还在内存中, 要从任务管理器中删除才可以!但是之前我在自己的奔三450普通电脑做的开发用的服务器上用六台电脑不停止的传送文件, 我的服务器程序一定最后会因为内存问题而崩溃. 因为现实应用环境没有那么频繁地传送文件, 所以现在系统已经稳定运行了五天了.同时我不停地在我的开发电脑上XP HOME版本, VC6 + SP6, 进行测试, 并且用BOUNDERSCHECKER进行辅助, 但是压根就没有发现内存泄露的问题. 于是我从程序上仔细检查, 从可能的地方进行补丁, 现在泄漏的速度比较慢了, 更惊奇的是, 我放在了W2K 专业版的普通家用电脑上做服务器, 居然没有任何泄露了, 但是让我困惑的是, 在我的XP+SP2开发电脑上, 泄露继续在缓慢而稳定地继续着. 至于我是如何确定有内存泄露的, 我是主要看任务管理器的. 
例如我的程序在不断地运行, 
在下午2点的时候, 
PF 137MB
Handles 6212
Threads 344
Processed 35Avaliable 183188KB
我的程序在内存中5260KB到了晚上6点
PF 145MB
Handles 6201
Threads 344
Processes 35Available 167376KB
我的程序是12312KB可见程序本身占用的内存明显增大, 可用的物理内存明显变小, 而且当我停了我的程序后, 系统可用内存不会回到原来那么大!现在我的困惑就是XP下为什么会有这种情况发生. 注, 我所有的程序都是用同一个程序测试的,都是在XP下生成的! 

解决方案 »

  1.   

    1,稍微深点的内存泄漏,BoundCheck是查不出的。
    2,相同API在W2k,XP上有的执行正常,有的就会不正常(如:执行时间偏长),倒是遇到过,不过你这种我倒没遇到过。
    3,用Intel的VTune查查看,他主站上有试用版下载。
      

  2.   

    突然发现, 他M的全是SP2惹的祸!重装一个干净的XP, 只有SP1, 没有此类问题!
      

  3.   

    今天把XP用上了SP2, 问题重现都是他NND的SP2的问题!
      

  4.   

    可恶的sp2,要是这样的话,那谁还敢打sp2??