(急)C#Winform Socket UDP队列(Queue)异步接收,内存溢出。传输速度30m/s,

dd加载中... 2020-10-12 05:37:53
公司项目:千兆网口接收设备的信号,360加速球检测有30m/s的下载速度。

程序开始后,初始化一个死循环线程用来处理队列数据,处理的过程也很简单,就是根据协议好的包头放入变量中。这个过程中内存一直增加直到内存溢出,程序闪退。 闪退之前设置断点:队列(Queue)里有几十万个缓存等待处理。

大神们有什么方案能解决?
...全文
2067 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
耗子哭死猫 2020-10-13
  • 打赏
  • 举报
回复
兄弟不要这样玩,如果说是分批传送,你可以接收到客户端集合中,每次接收前清空缓存。 其实就是逻辑性问题,比如5A C2 4B 00 05 00 6C 不清空缓存,下次5A C2 4B 00 05 00 6C 5A C2 4B 00 05 00 6C越堆积越多。最后超出负载
datafansbj 2020-10-13
  • 打赏
  • 举报
回复
贴一下代码吧,只有描述,看不出问题所在。往往一个代码的小小错误就可能导致这种结果。另外高性能的网络通信编程是比较复杂的,不是简单的代码堆砌就能做到的。
wanghui0380 2020-10-13
  • 打赏
  • 举报
回复
我们不想耽误你的时间,所以直接建议更换tcp应用层,直接用dotnetty 替换你自己的东西这个最快速 至于技术讨论?我们不想讨论。因为涉及的东西太多,太广。 1.并行/并发处理 2.限流处理 3.编解码处理 4.内存管理 如果你有兴趣,自己看看现在的不看博客园的老外们在怎么弄(老外不看博客园,所以不会一讨论问题就去套博客园那堆莫名其妙的文章和血案,所以他们可以写出和博客园那堆人不一样的东西) https://github.com/rsocket/rsocket-net/blob/master/RSocket.Core/Transports/SocketTransport.cs
dd加载中... 2020-10-13
  • 打赏
  • 举报
回复
我用的是Enqueue(入队)和Dequeue(出队)操作,pop是栈的操作吧
八爻老骥 2020-10-12
  • 打赏
  • 举报
回复
队列没做Pop操作?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧