Пример #1
0
        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 GarbageCollectorGenerationsSampleCallback(GarbageCollectorGenerationsSample sample)
 {
     GarbageCollectorGenerations.Add(sample);
 }