【C# .Net GC】配置


GC初始化设置

工作模式:工作战、服务器

工作方式:后台、非并发

可用可用不用设置采用默认的工作方式。工作站默认的工作模式是工作 工作方式是非并发,服务器默认的工作方式是服务器工作方式后台。

.net core 在.csproj 文件添加:


  true

代码中查看配置结果:

//查看GC的初始配置:类型、工作方式以及微调工作方式。  类型、工作方式在.json或xml文件中修改。不过可用在程序运行时候微调
Console.WriteLine($"IsServerGC:{GCSettings.IsServerGC}");// 是否服务器GC
Console.WriteLine($"IsConcurrent:{System.GC.GetGCMemoryInfo().Concurrent}");//工作方式 System.GC  
Console.WriteLine($"LatencyMode:{GCSettings.LatencyMode}");// 微调工作方式状态

在程序中微调工作方式:

工作站默认interactive, 服务器默认Batch。

using System.Runtime;
//查看GC的初始配置:类型、工作方式以及微调工作方式。  类型、工作方式在.json或xml文件中修改。不过可用在程序运行时候微调
Console.WriteLine($"IsServerGC:{GCSettings.IsServerGC}");// 是否是服务器GC
Console.WriteLine($"IsConcurrent:{System.GC.GetGCMemoryInfo().Concurrent}");//工作方式 System.GC  
Console.WriteLine($"LatencyMode:{GCSettings.LatencyMode}");// 微调工作方式状态

 
Console.WriteLine("GC的工作方式进行微调 将默认的模式修改成Batch");
GCLatencyMode oldGCL=GCSettings.LatencyMode;//获取当前进程 GC 工作方式的微调模式 
try
{
    GCSettings.LatencyMode = GCLatencyMode.Batch;
    //要执行其他代码
}
finally 
{

    Console.WriteLine($"IsConcurrent:{System.GC.GetGCMemoryInfo().Concurrent}");// //System.GC
    Console.WriteLine($"LatencyMode:{GCSettings.LatencyMode}");// 工作方式
    //修改回去
    GCSettings.LatencyMode=oldGCL;
}
C