private void ParseGchGen(Match match) { var sample_gen = new GarbageCollectorGenerationsSample(); var sample_mm = new ManagedMemoryData(); var parts = match.Groups[0].Value.Split(' '); var timestamp = Convert.ToUInt64(parts[2]); sample_gen.Timestamp = timestamp; sample_mm.Timestamp = timestamp; var matchInfos = GchGenInfo.Matches(match.Groups[0].Value); var loh = matchInfos[0].Value; var loh_alloc = Convert.ToUInt64(loh.Split(':')[1]); var loh_reserved = Convert.ToUInt64(loh.Split(':')[2]); sample_gen.LargeObjectsHeap = loh_reserved; var gen2 = matchInfos[1].Value; var gen2_alloc = Convert.ToUInt64(gen2.Split(':')[1]); var gen2_reserved = Convert.ToUInt64(gen2.Split(':')[2]); sample_gen.SmallObjectsHeapGeneration2 = gen2_reserved; var gen1 = matchInfos[2].Value; var gen1_alloc = Convert.ToUInt64(gen1.Split(':')[1]); var gen1_reserved = Convert.ToUInt64(gen1.Split(':')[2]); sample_gen.SmallObjectsHeapGeneration1 = gen1_reserved; var gen0 = matchInfos[3].Value; var gen0_alloc = Convert.ToUInt64(gen0.Split(':')[1]); var gen0_reserved = Convert.ToUInt64(gen0.Split(':')[2]); sample_gen.SmallObjectsHeapGeneration0 = gen0_reserved; sample_mm.HeapAllocated = loh_alloc + gen2_alloc + gen1_alloc + gen0_alloc; sample_mm.HeapReserved = sample_mm.HeapAllocated + loh_reserved + gen2_reserved + gen1_reserved + gen0_reserved; GarbageCollectorGenerationSampleCallback?.Invoke(sample_gen); ManagedMemorySampleCallback?.Invoke(sample_mm); }
private void ManagedMemorySampleCallback(ManagedMemoryData sample) { ManagedMemoryStatistics.Add(sample); }