C#GC.Collect()和Memory

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)

也许我应该使用另一种我不知道的技术?

D S*_*ley 7

如果该列表不再使用,GC将在可用内存出现问题时自动收集该列表.

但是,如果调用者在将其传递给您的函数后使用该列表,那么即使您将其设置为null ,GC 也不会收集它(您只需要对列表进行引用 - 您无法对其他对象执行任何操作持有参考资料).

除非你有一个可衡量的问题,否则不要试图超越GC.