在开发在线网站压力测试的服务端开发中。。。
结果遇到了以下问题,服务端运行Socket时,发现客户端每增加一个链接,内存占用就多1M。
当链接2000个时,内存占用到2G,真可怕。。
经过多方查证,发现了原来是每个线程启动时,如果遇到Thread.Sleep,默认会有1M的堆栈大小,所以服务端的线程数,导致了大量内存的占用。
再经过重重分析,最后发现Thead类原来有个初始堆栈大小设置,通过设置,占用大小会小一倍。
具体代码为:
Thread thread=new Thread(..参数1...,512);
经过测试,把线程堆栈设为512或以下,实际占用的内存都是一样的,估计微软有个最低限制。
问题“C# Socket服务端线程内存占用大" 就简单记录到这了。
秋色园是QBlog的官方站点,由路过秋天创建,基于cyqdata数据层框架开发的支持多用户、多语言、多数据库(access,mssql,oracle)、目录级url等功能强大的博客系统