【问题标题】:EWS Managed API 1.1 - Pull Subscriptions Memory LeakEWS 托管 API 1.1 - 拉取订阅内存泄漏
【发布时间】:2011-12-12 19:57:29
【问题描述】:

有没有其他人发现 Exchange Managed Web Services API 中的 Pull Subscriptions (ExchangeService.SubscribeToPullNotifications()) 存在内存泄漏问题?当调用PullSubscription.GetEvents() 时,几乎每个轮询调用的内存利用率都会攀升 4K。我能够降低内存利用率的唯一方法是在每次调用后强制进行垃圾收集(通过GC.Collect())——这是一条不必要的路径。

看到 API 近一年没有变化,我感到很惊讶。

【问题讨论】:

  • 继续执行 GC.Collect() - 没关系,因为 Exchange API 调用掩盖了垃圾收集器使用的时间。但是,您的代码很可能存在泄漏。
  • 我通过创建一个简单的控制台应用程序来排除代码泄漏,该应用程序只创建一个订阅并在延迟 5 秒后在 while(true) 中轮询它。但是 - 内存不断攀升(尤其是当您有多个订阅时)。

标签: c# exchange-server exchangewebservices ews-managed-api


【解决方案1】:

another post 已解决此问题。本质上,EWS 与另一个未能发布 NetworkStream 的组件发生冲突(由于 SqlException)。 ANTS memory profiler 用于查明问题的原因和时间。如果没有这个分析工具,我们永远不会发现问题。

【讨论】:

    【解决方案2】:

    我会说,如果 GC.Collect 回收内存,则不会发生内存泄漏。因为有足够的可用内存,所以 GC 执行 GC 收集没有压力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多