1 c# collections garbage-collection dynamic-memory-allocation
考虑这种情况:Form1 构建了一个包含大量元素的 List 对象。然后,它必须通过参数将此集合传递给 Form2。
在 Form2 中制作它的硬拷贝后,我想清除与 Form1 中的集合相关的所有内容。让Col1成为 Form1 中集合的标识符。
由于 Col1 是通过参数通过引用传递的,因此我调用Col1.Clear()来清除它的元素,然后调用 Col1.TrimExcess()将其实际大小减少到 0,因此它不会跟踪大量空值。
我的目的是尽快清除所有使用过的内存。Col1.TrimExcess() 应该清除所有使用的内存,但我很好奇 Col1 = null 在我(或大多数)情况下是否会更好?
我想调用 Col1.Clear() 来清除它的元素,然后 Col1.TrimExcess() 将是一个更好的方法,因为 Col1 = null 只会取消引用列表但它仍然在内存中,直到 GC 完成它的工作.
调用 Col1.Clear() 将从列表本身取消对列表项的引用,然后 Col1.TrimExcess() 将从列表中删除所有空元素。
因此,通过这种方式,它将删除内存中所有内容的引用。
希望能帮助到你...