.NET内存消耗问题

Bra*_*rad 1 .net memory-management

这些方法中的任何一个是使用比另一个更多的内存还是在GC上使用更大的负载?

选项1

LargeObject GetObject()
{
    return new LargeObject();
}
Run Code Online (Sandbox Code Playgroud)

选项#2

LargeObject GetObject()
{
    LargeObject result = new LargeObject();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

And*_*zub 5

两种方法的堆内存使用量相等.在第二种情况下创建局部变量的开销微乎其微,但它不应该打扰你.变量将存储在堆栈中,不会对GC造成任何额外压力.此附加变量也可能由编译器或JIT优化(因此它可能不存在于CLR实际执行的代码中).