服务器上的WCF(双工)中的内存泄漏

Car*_*ten 6 wcf memory-leaks duplex

嗨,在双工模式下运行WCF的服务存在很大问题.它泄漏了内存(不多但每天大约80MB)并且在内存分析器与服务一起运行24小时之后我发现大部分内存都byte[]被引入了相当混乱,但我最常引用的结尾是这样的: 一个路径保存byte []  - 数组 而"root"看起来像这样: 根

我也看到很多ServiceChannel(大约200个)来自回调频道(我认为).

我很确定我每个连接的客户端只能容纳其中的一个.

总体而言,我的问题似乎与此几乎相同:Silverlight Wcf实现中的内存泄漏,但在服务器端.

我甚至尝试过[MTAThread]这里提到的事情:当客户端超时但是它没有解决问题时,WCF服务泄漏句柄和内存.

我只是不认为问题出在我的代码中,因为我OperationContext.Current.GetCallbackChannel<IServiceConnectorCallback>()在我自己的一个对象中获取它之后将回调通道包装起来并且没有泄漏(对于每个内存中的每个客户端只有一个给定快照) - 确保我在几次重置这些回调,因为通道可能会改变(客户端丢失连接或重新连接)但我没有办法处理旧的引用,所以我只删除它们,GC应该做它的工作在他们.

我确实使用PerCall我的服务,所以我根本没有处理我的代码中的那些对象.

除了每隔几天重新启动一次服务之外,我真的不知道如何处理这个问题 - 我现在不想要解决的问题:(

所以请给我一些帮助/提示 - 非常感谢你!

Ric*_*ett 7

当基于会话的通道故障时,调用Close将引发异常.但是,在这种情况下,有些代理端资源未清除,只有Abort在出现故障通道时才会清除这些资源

确保在更换故障通道时首先更换Abort旧通道