我使用 .NET Memory Profiler 分析了我的 WCF 应用程序,发现存在 TimeBoundedCache.ExpirableItem 和 Byte[] 类型的实例泄漏:
比较是使用两个间隔为 1 小时的快照进行的,不同时间的比较也表明两种类型的数量一直在增加。除了这两种类型之外,没有明显的泄漏。
分配堆栈如下所示:
有谁知道可能是什么原因造成的?
我使用 .NET Memory Profiler 分析了我的 WCF 应用程序,发现存在 TimeBoundedCache.ExpirableItem 和 Byte[] 类型的实例泄漏:
比较是使用两个间隔为 1 小时的快照进行的,不同时间的比较也表明两种类型的数量一直在增加。除了这两种类型之外,没有明显的泄漏。
分配堆栈如下所示:
有谁知道可能是什么原因造成的?
这由 WCF 安全堆栈中的各种安全令牌缓存实现使用。我猜您的客户端配置了该CacheIssuedTokens
功能?
此缓存将通过在后台线程上运行的清除进程定期清理,因此您无需担心它会永远泄漏。但是,您确实需要意识到,如果您的流程中有多个客户都拥有自己的安全令牌,那么这将随着时间的推移而增加。