gpt4 book ai didi

.net - GC.GetTotalMemory(false) 和 GC.GetTotalMemory(true) 有什么区别

转载 作者:行者123 更新时间:2023-12-02 18:12:46 26 4
gpt4 key购买 nike

有人可以告诉我 GC.GetTotalMemory(false) 和 GC.GetTotalMemory(false) 之间的区别吗?GC.GetTotalMemory(true);

我有一个小程序,当我比较结果时,第一个循环给出一个 put put for GC.GetTotalMemory(true);和 <循环计数 0 Diff = 0> for GC.GetTotalMemory(false);但不应该是相反的吗?

类似地,循环的其余部分打印一些数字,这两种情况都不同。这个数字表示什么。为什么它会随着循环的增加而变化。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace test
{
struct Address
{
public string Street;
}
class Details
{
public string Name ;
public Address address = new Address();

}
class emp :IDisposable
{
public Details objb = new Details();
bool disposed = false;
#region IDisposable Members
public void Dispose()
{
Disposing(true);
}
void Disposing(bool disposing)
{
if (!disposed)
disposed = disposing;
objb = null;
GC.SuppressFinalize(this);
}

#endregion
}


class Program
{
static void Main(string[] args)
{
long size1 = GC.GetTotalMemory(false);
emp empobj = null;
for (int i = 0; i < 200;i++ )
{
// using (empobj = new emp()) //------- (1)
{
empobj = new emp(); //------- (2)
empobj.objb.Name = "ssssssssssssssssss";
empobj.objb.address.Street = "asdfasdfasdfasdf";
}

long size2 = GC.GetTotalMemory(false);
Console.WriteLine( "loop count " +i + " Diff = " +(size2-size1));

}
}

}
}

最佳答案

该参数定义是否要等到垃圾回收发生后才运行。

参见GC.GetTotalMemory(Boolean) Method :

Parameters

forceFullCollection

Type: System.Boolean
true to indicate that this method can wait for garbage collection to > occur before returning; otherwise, false.

diff 仍然为 0 的原因可能是因为即使您传递 false 也已经发生了 GC。

关于.net - GC.GetTotalMemory(false) 和 GC.GetTotalMemory(true) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582967/

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