我正在檢查我的服務的內存使用情況,並發現私人字節隨着時間增加。該服務會創建所需的新組件,並且只有在服務停止時纔會處理。所以我正在尋找在存在服務調用時創建新組件的代碼,並在不需要時嘗試處理它們。我正在使用PerfMon來檢查專用字節。結構和垃圾收集
那麼我在正確的軌道上呢?
此外,我發現該方法的一個每次創建新的結構,然後它不被處置或分配給null。
var structInfo = new MyStruct();
structInfo .StructSize = Marshal.SizeOf(structInfo);
MyClass info = this.BuildStructInfo(structInfo);
return info;
編輯:
該方法返回其自結構獲取其值的類。
我是否需要處置structInfo
,如果我什麼都不做,它會被GC收集嗎?
分配內存很貴。 CLR將會保留系統給它的儘可能多的內存。除非你遇到OOM異常,否則不要擔心。 – Will 2012-08-06 12:47:42
根據你我需要看看其他代碼,而不是擔心這個? – 2012-08-06 12:53:47
Knuth認爲,過早優化是萬惡之源。你有沒有記憶問題,「嘿,偶然我看了我的應用程序的內存使用情況,它不應該這麼高」?如果不是,那麼就放棄它。 – Will 2012-08-06 13:06:28