我們正在使用EWS託管API,它在給定時間間隔後輪詢MS Exchange以查找新郵件。每次調用投票調用(PullSubscription.GetEvents()
) - 微軟API都無法正確處理NetworkStream
,並導致內存按比例增加。這以前是discussed here,但從未解決。使用ANTS Profiler,我們能夠確定哪些對象在內存中不斷增長並隔離問題。如何強制無法取消對象的垃圾回收?
現在問題已經被隔離 - 是否有一種方法來處理在我們沒有參考的外部API中創建的NetworkStream? GC.Collect()似乎沒有處理它,因爲它仍然有一個活動的引用。我們可以做些什麼來清理懸掛參考?我們可以使用一些包裝來強制清理其bug問題的SDK嗎?
我想知道 - 你能通過反射獲得參考嗎? –
您能否請您在庫中找到孤兒NetworkStream的地方?我只是圍繞GetEventsMethod進行探測,但沒有找到NetworkStream。 –
@HenningKrause我也給了Daren Thomas的方法一個嘗試,但反思需要深入研究我選擇跳過的ExchangeService和SubscriptionBase類的內部。目前我已經跟着Salvatore的#1現在開了一張MS的門票。我們將看到接下來會發生什麼... – SliverNinja