gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:49:26 26 4
gpt4 key购买 nike

嗨,在双工模式下运行 WCF 的服务存在很大问题。
它泄漏内存(不多,但每天大约 80MB),在内存分析器与服务一起运行 24 小时后,我发现大部分内存位于 byte[] 中。引用相当困惑,但我大多数引用都以这样的方式结束:
one path holding the byte[] - array
“根”看起来像这样:
root

我也看到很多 ServiceChannel (大约 200)来自(我认为)来自回调 channel 。

我很确定我只为每个连接的客户端持有其中 1 个。

总的来说,我的问题似乎与此几乎相同:memory leak in silverlight Wcf implementation但在服务器端。

我什至尝试了 [MTAThread]这里提到的事情:WCF service leaks handles and memory when a client times out但这并不能解决问题。

我只是不认为问题出在我的代码上,因为我在使用 OperationContext.Current.GetCallbackChannel<IServiceConnectorCallback>() 获取回调 channel 后包装了它在我自己的一个对象中并且那些不会泄漏(在任何给定的快照中,内存中的每个客户端只有一个) - 确保我多次重置这些回调,因为 channel 可能会改变(客户端丢失连接或重新连接) 但我没有办法处理旧引用,所以我只删除它们,GC 应该对它们进行处理。

我确实使用 PerCall在我的服务上,所以我根本没有任何处理代码中这些对象的方法。

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

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

最佳答案

当基于 session 的 channel 对 Close 的调用出错时会抛出异常。但是,在这种情况下,有些代理端资源没有被清理,这些资源只有在您 Abort 时才会被清理。故障 channel

确保在更换故障 channel 时Abort旧的第一个

关于wcf - 服务器上 WCF(双工)中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com