我看到标题后,首先想到的就是内存碎片。解决这个问题的方法……如果是我的话,我会申请一块比适当大小的内存(反正你一次传送的数据不可能到几M),以后你Server端频繁的内存操作都在这块区域进行

解决方案 »

  1.   

    我觉得,你还是测试一下程序占用内存的情况----比如说,开始允许是多少,运行一段时间(24小时)后系统又是如何,还要看看Handles,Thread,如果内存泄露了,那就没什么好说的了----改程序吧.
      

  2.   

    你可以用DEBUG版的跟踪方式,应当是内存有泄露!
      

  3.   

    new 的东东没有 delete, alloc的没有free...!
      

  4.   

        不好意思,内存泄漏的问题我可以担保,绝对没有。
        sxbyl:我觉得你说的原因很有可能,能否说的详细点,因为Server端的内存操作非常多,怎么保证这些内存操作都在我申请的那块内存之中进行?
        xyzboat:你的意思是说我有可能忘记Close一些Handle或是结束某些线程?似乎是有这样的可能,因为我是使用独立的线程发送每一个数据包,并在线程中使用了CEvent对象,但从程序上看(以及在Debug版的Trace信息看),每一个发送线程时肯定Terminate了的,CEvent对象也关闭了。有没有什么方法可以知道当前系统中还有多少个Handle可用?    谢谢各位!
      

  5.   

    win2k下没有毛病,98下就.....
    如果是第三种,怎么会有在不同的操作系统下有不同效果呢
    估计是对数据库的频繁操作的问题,可能产生了碎片....
      

  6.   

    我认为是第三种,看了具体问题后也没改变想法,因为98这个操作系统确实很烂,内存管理和Win2000没法比。操作体统都涉及到一个内存优化的问题,我认为Win2000是Windows系列里做得最好的。