gpt4 book ai didi

c# - 为什么 GC.GetTotalMemory 返回不同的结果?

转载 作者:行者123 更新时间:2023-11-30 15:07:26 32 4
gpt4 key购买 nike

当我尝试这段代码时

public static void Main()
{
Console.WriteLine("Total bytes : " + GC.GetTotalMemory(true));

Console.WriteLine("Total bytes : " + GC.GetTotalMemory(true));

Console.WriteLine("Total bytes : " + GC.GetTotalMemory(true));

Console.ReadKey();
}

我得到这些结果

enter image description here

为什么第一个结果和其余结果之间存在差异?

最佳答案

一个原因是你的代码被翻译成这样:

int totalMemory = GC.GetTotalMemory(true);
string s = "Total bytes : " + totalMemory;
Console.WriteLine(s);

在上面代码的第二行,String 类被初始化了,如果它还没有被初始化的话。这意味着它的静态字段被初始化并且它的静态构造函数被调用(如果它有的话)。然后调用 Concat() 方法,并初始化其运行期间所需的所有类。

在第三行,Console 类被初始化,如果它还没有被初始化的话。然后当然还有 WriteLine() 执行期间使用的所有类。

所有静态字段都需要一些内存,所以当您第二次调用 GC.GetTotalMemory() 时,您会感觉得到的数字稍大一些。

关于c# - 为什么 GC.GetTotalMemory 返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6570043/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com