我們正在調試一些內存問題。我們正在觀看同一個應用的5個實例。我們停止了3.Gen2堆大小從大約5M變爲大約10M,並且Gen0和Gen1堆大小變化不明顯。關閉一些應用程序的實例,增加Gen-2垃圾收集堆?
這與我所期望的完全相反。我預計它會縮小規模,並且永遠不會期望它會增加。
這是怎麼回事?
更多詳細信息: 這些是控制檯應用程序,相同的物理.exe,不同的命令行,都做簡單的「讀取文件,插入數據庫」(反之亦然)的工作。
我們遇到內存問題,無法找到它,因此在絕望中每次批處理後都添加一個GC.Collect。這樣做緩解了內存使用情況,但沒有提供根本問題的線索。
@ S.Skov,GC堆大小對於每個實例都是相同的。關閉一些應用程序時,每個仍然打開的應用程序具有相同的堆大小。這使我們在假設GC在同一計劃的所有實例之間共享的情況下運營。我們使用sysinternals的Process Explorer來測量堆大小。
tl; dr版本:內存使用失控。 GC.Collect()「修復」症狀,但不是問題。此外,GC堆大小在同一應用的所有實例中始終保持一致。
道歉:我也可能做一個糟糕的工作,有效地轉錄我們的團隊的討論和揮手,在網絡上有意義的東西。
絕對需要更多的細節。爲什麼五個實例應該足夠像GC,堆等是按每個進程定義的。 gen2堆何時更改大小?你想要調試什麼問題? 5-10M的堆大小非常小,可能是由於在WinForm上移動鼠標光標引起的。 – 2010-05-13 14:06:32
什麼樣的應用程序? 「實例」是一個過程嗎?你用什麼來衡量發電量? – 2010-05-13 14:13:49
細節補充,如果我不能讓我的問題變得有意義,我也願意使它成爲CW。 – hometoast 2010-05-13 14:47:54