0

我们有一个用 C#.Net 3.5 开发的套接字服务器。每当客户端断开连接并连接时,我都会看到服务器内存使用量增加。如果未提供有效凭据,服务器将断开客户端连接。

当客户端尝试使用无效凭据连接时,会保留更多内存并且似乎永远不会放弃。客户端每秒尝试重新连接一次。下面是处理断开连接的代码。每当客户端断开连接并且遇到读写操作错误时,都会调用此代码。

有人可以指导我如何调试/解决这个问题吗?

4

2 回答 2

0

可能是您将 state.workSocket 和 state 设置为 null,而他们没有机会处理。

于 2012-04-27T18:37:11.663 回答
0

您如何测量内存使用情况?

如果机器上没有内存压力,GC 将不会经常执行收集。因此,即使已释放内存,任务管理器中显示的内存使用量也会上升。

您可以尝试添加一些GC.Collect调用来强制 GC 运行 - 这将显示您是否真的在泄漏内存。(不要在您的生产构建中留下收集呼叫)。

MSDN 文章:.NET 应用程序的内存使用审计

于 2012-04-30T09:47:56.703 回答