我一直在玩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);
}
}
答案 0 :(得分:9)
我认为这是因为分配器在某处占据了很大一部分内存。它将它用于多个对象。尝试做:
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
实际上你不应该注意自由记忆的微小波动:
然后他对他们说,渲染 因此凯撒的东西 是凯撒的;这些东西都归于上帝 那是上帝的
:)