高效服务器开发中,关于内存操作的疑惑。求解!
rabo 2007-06-18 06:46:14 我设计了一个服务器,使用IOCP模式。
在处理服务器接收数据的地方,遇到了一些问题。
比如我先收到包头,发现要收的数据为1024个字节,这个时候我就new出来这个空间,然后收一次,拷进去一次,N次之后,拷满了,确定这个逻辑包收完了,我才开始交给上层处理数据。
目前我是上述这样实现的。但这就引发了几个问题。
1,连接数比如有1000个,那么,比如每个数据大小为1M,那我就要NEW 1000M的内存来等拷贝。
2,1000个连接后,比如一个连接要memcpy 10次,那么就是10000次,效率很低。
3,实际应用中,小数据比较多,而且我不停的NEW,内存碎片就越来越多。
总结一下,就是性能低下。
但是现在在运营中的那么多服务器不都很高效吗?能上万连接。
那一定就是我在设计这方面知识比较落后,但在网上查了又查,网上也没说个什么名堂出来。
特来此求教!
希望朋友们讲一下,你们是怎么样设计的。我用心学习一下。谢谢大家了。