我们有一个用C#.Net 3.5开发的套接字服务器。每当客户端断开连接并连接时,我都会看到服务器内存使用量增加。如果未提供有效凭据,服务器将断开客户端连接。
当客户端尝试使用无效凭据连接时,会保留更多内存,并且似乎永远不会放弃。客户端尝试每秒重新连接一次。以下是处理断开连接的代码。只要客户端断开连接并在遇到读写操作错误时,就会调用此代码。
有人可以指导我如何调试/修复此问题吗?
答案 0 :(得分:0)
可能是你将state.workSocket和state设置为null,而没有机会处置它们。
答案 1 :(得分:0)
您如何衡量内存使用情况?
如果机器上没有内存压力,GC将不会经常执行收集。因此,即使已经处理了内存,任务管理器中显示的内存使用量也会增加。
您可以尝试添加一些GC.Collect
调用来强制GC运行 - 这将显示您是否实际泄漏内存。 (不要在生产版本中留下Collect调用。)