private async Task Callback(object state) { foreach (var profiler in _gcProfilers) { await profiler.Invoke(ApplicationGCProfilingContext.GetSnapshot()); } foreach (var profiler in _threadingprofilers) { await profiler.Invoke(ApplicationThreadingProfilingContext.GetSnapshot()); } }
public static ApplicationGCProfilingContext GetSnapshot() { var context = new ApplicationGCProfilingContext() { MaxGeneration = GC.MaxGeneration, Gen0_CollectionCount = GC.CollectionCount(0), Gen1_CollectionCount = GC.CollectionCount(1), Gen2_CollectionCount = GC.CollectionCount(2), GCLatencyMode = GCSettings.LatencyMode.ToString(), GCMode = GCSettings.IsServerGC ? ApplicationProfilingConstants.GC_Server_Mode : ApplicationProfilingConstants.GC_Workstation_Mode, TotalMemory = GC.GetTotalMemory(false) }; return(context); }