2013-03-09 41 views
0

我有一個對象B通過它的構造函數接受一個對象C. 現在C在A的構造函數內部創建並設置爲Field/Member變量。 裏面我創建了B的多個實例並將它們插入列表中。 後來我清除了這個List .........我的問題是我有內存泄漏,因爲C在A中還活着,而A當然還活着。C#內存泄漏字段或成員變量

感謝

+7

這就像是問「我有斷腿嗎?」通過*電話*一個dokter。請顯示一些代碼。 – Thousand 2013-03-09 10:30:28

+0

使用[CLR Profiler](http://www.microsoft.com/en-us/download/details.aspx?id=16273)來查找自己。度量是要知道的。 – rene 2013-03-09 10:37:01

回答

4

C#有自動垃圾收集,所以框架會發現,當一個對象是不再使用,它​​會釋放未使用的對象的內存。

如果您在清除Bs列表時是否也刪除了對象C,我敢打賭它不會發生,因爲您仍然通過A的屬性(字段)引用它

+0

我在問B是否從內存中刪除。 – Andy 2013-03-09 10:44:35

+0

@如果你的對象不包含本地類型,每個對象都將被GC刪除。 – 2013-03-09 10:53:58

+0

@而且,所有不再被引用的對象都將被垃圾收集器刪除。也就是說,如果你有一個對這個Bs列表的引用,它們將不會被解除分配。如果您僅提及其中一個Bs,則所有未引用的將被解除分配。 – csima 2013-03-09 11:26:15