背景: 我有一個2類A & B.類A包含1個int64,1個int,1個日期時間,6個字符串,1個字節[]和一個B類對象列表。包含許多字符串變量導致內存問題的類
B類包含2個Int64,1個枚舉(4個值),5個字符串。
A類和B類之間有一個主要的細節關係。 A類可以在其列表中有0個或更多的B類對象。
這些對象用於存儲我們的數據庫的搜索結果。
我們有一個SOA架構。客戶可以使用特定的日期範圍和固定的標準進行搜索。我們使用這些服務來收集搜索結果並分批推送給客戶端。發送每批後,我們從服務中刪除這些對象。
問題: 如果用戶執行返回200k結果的搜索(組合A + B類計數),則服務內存消耗跳轉200mb。但是,如果後續搜索只返回少量結果,則內存不會恢復到之前的狀態。當我查看服務的性能計數器時,我發現很多內存都被gen2對象佔用。
沒有嘗試做一個GC.Collect(),我怎樣才能確保該內存更快地返回?我雖然在A類和B類上使用IDisposable接口,但由於它們中的大多數字段都是字符串,我不知道如何強制處理它們。
完全同意 - 用戶不需要200k行數據 – Matt