【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; }