Quelqu'un peut-il me dire la différence entre GC.GetTotalMemory (false) et GC.GetTotalMemory (true);Quelle est la différence entre GC.GetTotalMemory (false) et GC.GetTotalMemory (true)
J'ai un petit programme et quand j'ai comparé les résultats, la première boucle donne un put put < nombre de boucles 0 Diff = 32> pour GC.GetTotalMemory (true); et < nombre de boucles 0 Diff = 0> pour GC.GetTotalMemory (false); mais ne devrait pas être l'inverse?
Le reste des boucles affiche des chiffres qui sont différents dans les deux cas. qu'est-ce que ce nombre indique? pourquoi change-t-il à mesure que la boucle augmente?
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));
}
}
}
}
une collection complète des ordures ... – Peter
Dans ce cas, quand je passe vrai, je pensais pour obtenir diff = 0, car la méthode attend la récupération de place. mais je reçois le diff = 0 quand je passe faux, ce qui me déroute – somaraj