public void RunAnalysis()
 {
     viewModel = new MemoryReportView {
         GCMode         = GetGCMode(),
         ClrVersion     = GetClrVersion(),
         DotnetFlavor   = GetDotnetFlavor(),
         FinilazerStats = GetFinalizableObjectsStats(),
         HeapBalance    = GetHeapBalance(),
         HeapStats      = GetHeapStats(),
         GCHeapBrekup   = GetGenerationMemoryBreakUp(),
         LOH            = GetLOHStats(),
         MainModuleName = GetMainModule(),
         TopGCRoots     = GetTopGCRoot(),
         TotalGCMemory  = GetGCHeapSize(),
         DumpPath       = DumpPath
     };
 }
        public TopGCRootView(MemoryReportView reportView)
        {
            SetColumns(ColumnDefinition.Star(1), ColumnDefinition.Star(1), ColumnDefinition.Star(1));
            SetRows(RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1), RowDefinition.Star(1));
            SetChild(new ContentView("CLR Type"), 0, 0);
            SetChild(new ContentView("CLR Type's Module"), 1, 0);
            SetChild(new ContentView("GC Roots of 3 objects"), 2, 0);
            int i = 1;

            foreach (var(typeName, moduleName, gcRoots) in reportView.TopGCRoots)
            {
                SetChild(new ContentView(typeName), 0, i);
                SetChild(new ContentView(moduleName), 1, i);
                foreach (var r in gcRoots)
                {
                    SetChild(new ContentView(r.GCRoot), 2, i);
                }
            }
        }
Example #3
0
        public void RenderReport(BaseReportView baseViewModel)
        {
            MemoryReportView viewModel = (MemoryReportView)baseViewModel;
            var region = new Region(0,
                                    0,
                                    1080,
                                    10800,
                                    true);



            var console = _invocationContext;

            if (console is ITerminal terminal)
            {
                terminal.Clear();
            }

            console.Append(new ContentView("Dump details"));
            console.Append(new SplitterView());
            console.Append(new DumpDetailsView(viewModel));
            console.Append(new ContentView("\n\n"));
            StackLayoutView stackLayoutView2 = new StackLayoutView
            {
                new SplitterView(),
                new ContentView($"Total GC Heap Size: {viewModel.TotalGCMemory}"),
                new SplitterView(),
                new ContentView("\n\n"),
                new TemplateStackView("GC split per logical heap", new HeapBalanceView(viewModel)),
                new TemplateStackView("Memory stats per GC type", new GCHeapBreakupView(viewModel)),
                new TemplateStackView("LOH stats", new LOHView(viewModel)),
                new TemplateStackView("Finalizer Object Stats", new FinalizerView(viewModel)),
                new TemplateStackView("Top 50 Types consumig memory", new HeapStatsView(viewModel)),
                new SplitterView()
            };
            var screen = new ScreenView(_consoleRenderer, _invocationContext)
            {
                Child = stackLayoutView2
            };

            screen.Render(region);
        }