gpt4 book ai didi

c# - 为什么 GC.GetTotalMemory() 报告巨大的内存分配?

转载 作者:太空狗 更新时间:2023-10-29 20:15:13 24 4
gpt4 key购买 nike

我一直在研究 GC.GetTotalMemory()。当我在下面的示例中创建类型为 Titles 的局部变量时,消耗的内存量增加了 6276 字节。这是怎么回事?

class Program
{
enum Titles { Mr, Ms, Mrs, Dr };

static void Main(string[] args)
{
GetTotalMemory();
Titles t = Titles.Dr;
GetTotalMemory();
}

static void GetTotalMemory()
{
long bytes = GC.GetTotalMemory(true);
Console.WriteLine("{0}", bytes);
}
}

最佳答案

我认为这是因为某个地方的分配器占用了一大块内存。它将用于多个对象。尝试做:

GetTotalMemory();
Titles t = Titles.Dr;
GetTotalMemory();
Titles t2 = Titles.Mr;
GetTotalMemory();

看看会发生什么。

这是我所看到的,GetTotalMemory() 并不是那么无辜:

    GetTotalMemory();
Titles t = Titles.Dr;
GetTotalMemory();

输出:

12828
19484

还有这个:

GetTotalMemory();
//Titles t = Titles.Dr;
GetTotalMemory();

输出:

12828
19484

实际上你不应该关注可用内存的小波动:

Then saith he unto them, Render therefore unto Caesar the things which are Caesar's; and unto God the things that are God's

:)

关于c# - 为什么 GC.GetTotalMemory() 报告巨大的内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566342/

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