有N(N>200)个客户连接同时连接上来,并且持续一段时间(同一线程每3秒发一次)往服务器发送数据,服务程序执行一段时间后就发生了内存溢出错误,这应该如何处理?求高手进来指点(分不够可以再加)

解决方案 »

  1.   

    服务程序执行一段时间后就发生了内存溢出错误
    数据量怎么样?可以考虑把请求的内容 如果相同的话放到 cache中,不要每次请求都查询数据库啦,操作文件啦之类的
      

  2.   

    你这应该是高并发的处理情况,不知道你程序的具体实现,不过可以用NIO异步,或者线程池。当然其他一些现成的socket网络框架,比如nina、netty等都可以处理(都是对NIO多线程的封装)。
      

  3.   

    服务器是同步多线程,处理比较简单,收到客户端一个连接请求则new一个新线程去处理
      

  4.   

    还是代码的事,要吗 有大量的new,要吗 有大量占用的资源 没释放。
    试试 jconsole 调试下吧。
      

  5.   

    jconsole 用的很少,好象看不到是哪里占的堆内存没释放
      

  6.   

    支持,用线程池控制,不停的new新的很容易挂,不过lz的内存溢出日志拿出来看看,也许是其它的,比如socketServer的毛病
      

  7.   

    是的,每当客户端有新连接过来再new一个新线程
    不过我现在的问题是线程的数目是不变的(一直200个连接,一个连接一个线程),只是每个线程一直在运行