频繁申请内存导致内存申请失败,求大神帮忙 内存socketboost申请内存失败 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一开始不申请那么多socket试试 在程序初始化时直接初始化了2万个socketlz是怎么做的?没有连接进入的时候,弄那么多干嘛? 申请2w个socket这个太奇葩了,改了吧。VirtualAlloc是按4K对齐分配内存,也就是说你申请1字节也是占用4k,申请4000字节也是4k,按需分配吧,你这看来内存资源不够用。。不确定你是啥原因导致内存分配失败的,出问题时自己看看内存占用情况呗。 同意楼上讲的,IOCP初始化完成后先进行AcceptEx投递,不需要初始化那么多的socket。AcceptEx投递完成后,继续再投递就可以保证接入,要优化还可以考虑reuse而不是close,但这个不是必须的。内存频繁申请肯定要用内存池,boost库的没有用过,按道理不应该出现这个问题,会不会是内存释放处理的有问题,可以重点跟下资源回收。几百个连接就会出问题明显是业务处理的问题,IOCP的能力不止这点 to 2 楼 oyljerry嗯,申请那么多确实是不好,现在是每投递一个Accept申请一个socketto worldy和刚开始需求有关,当时服务器计划做的是短链接,收发几个包就断开,频繁的申请socket会大大降低性能。改需求后没考虑这边导致了现在的这个情况,已经改掉了~ 最终问题解决了,用的单向链表内存池。但是在频繁的使用VirtualAlloc分配内存时还是会出错,改成HeapAlloc后好了。还是不明白为什么。 MFC 如何调用Windows 网络登录对话框 关于outlook com接口,无语了 求救::CListCtrl 控件怎么加上行标题啊?! 请教 _bstr_t与BSTR的矛盾? 关于窗口的问题 菜单命令对应的代码是什么? 如何能使我的主窗体运行后不在任务栏中显示出来呢? 对话框与视图 关于程序间的接口问题。 今天面试后让我不知道路在何方 VS 如何更改调试dll的EXE
lz是怎么做的?没有连接进入的时候,弄那么多干嘛?
同意楼上讲的,IOCP初始化完成后先进行AcceptEx投递,不需要初始化那么多的socket。
AcceptEx投递完成后,继续再投递就可以保证接入,
要优化还可以考虑reuse而不是close,但这个不是必须的。
内存频繁申请肯定要用内存池,boost库的没有用过,按道理不应该出现这个问题,
会不会是内存释放处理的有问题,可以重点跟下资源回收。
几百个连接就会出问题明显是业务处理的问题,IOCP的能力不止这点
嗯,申请那么多确实是不好,现在是每投递一个Accept申请一个socket
to worldy
和刚开始需求有关,当时服务器计划做的是短链接,收发几个包就断开,频繁的申请socket会大大降低性能。改需求后没考虑这边导致了现在的这个情况,已经改掉了~