Big*_*ddy 1 c# garbage-collection
我收到一个非常大的列表作为方法参数,并希望在使用它后从内存中删除它.通常我会让GC做它的事情,但我需要非常小心这个应用程序中的内存使用.
这段代码会实现我的目标吗?我读过很多不同意见,很困惑.
public void Save(IList<Employee> employees)
{
// I've mapped the passed-in list
var data = Mapper<Employee, EmployeeDTO>.MapList(employees);
// ?????????????
employees = null;
GC.Collect();
// Continues to process very long running methods....
// I don't want this large list to stay in memory
}
Run Code Online (Sandbox Code Playgroud)
也许我应该使用另一种我不知道的技术?
如果该列表不再使用,GC将在可用内存出现问题时自动收集该列表.
但是,如果调用者在将其传递给您的函数后使用该列表,那么即使您将其设置为null ,GC 也不会收集它(您只需要对列表进行引用 - 您无法对其他对象执行任何操作持有参考资料).
除非你有一个可衡量的问题,否则不要试图超越GC.