套接字上的重叠数据内存泄漏

时间:2018-01-29 21:44:00

标签: c# sockets memory-leaks heap-profiling

我使用异步套接字使用MSDN文档在客户端和服务器之间建立连接:

https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.100).aspx

https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.100).aspx

我从Synchronous开始,后来开始使用Asynchronous。成功完成第一个应用程序后,我开始在GitHub存储库中搜索更多代码和更多解释。我发现了这个:

https://github.com/perrybutler/csharpsockets

它很好,它有效,但它有内存泄漏,我开始分析,我发现了这个:

enter image description here

(可能的内存泄漏)

enter image description here

enter image description here

enter image description here

(在各处发现循环检测的状态.Idk他们的意思。我认为应用程序或GC强制它停止并将其标记为循环)。

我觉得有些不对劲,因为如果你发送1MB的数据,内存应该只增加1MB,但后来会减少。但这不会发生。我开始处理所有事情而不会造成异常,但这并没有多大帮助。

我开始在StackOverflow和其他地方搜索这个,我发现了这个:

.NET Does NOT Have Reliable Asynchronouos Socket Communication?

但是,我并不真正了解那里正在讨论的内容。

我也发现了这个:

https://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod

我读到套接字需要确认何时它已经在BeginSend / EndSend&之间发送了数据。 BeginReceive / EndReceive,因为如果没有,它将等待,并开始增加内存(直到检测到循环?)

也许我与CodeProject共享我应该得到这个?我不知道,我必须从哪里开始。

我需要一本指南。我将尝试描述CodeProject。

0 个答案:

没有答案