public void Can_Compare_Running_Process_With_Dump() { var process = DumpCreatorTests.AllocStrings(StringAllocx86, N50K); int LeakInKB = StartMemAnalyzer($"-pid {process.Id} -f2 {EmptyDumpx86}", out string output); Console.WriteLine(output); Assert.IsTrue(LeakInKB < -2500, $"Leak should be at least -2500 KB but was {LeakInKB}, Output: {output}"); }
void AllocateAndDump(string exe, int n, string dumpFile) { DumpCreator creator = new DumpCreator(true, false); var process = DumpCreatorTests.AllocStrings(exe, n); string dumpfile = creator.Dump(new string[] { "-ma", $"{process.Id}", $"{dumpFile}" }); Assert.IsNotNull(dumpfile, $"Dump {dumpFile} could not be created"); process.Kill(); }
public void Can_Analyze_Running_Process_x64() { var process = DumpCreatorTests.AllocStrings(StringAllocx64, N500K); int totalAllocatedInKB = StartMemAnalyzer($"-pid {process.Id} -vmmap", out string output); Console.WriteLine(output); var lines = output.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // AllocatedBytes Instances(Count) Type // 27.091.100 553.805 System.String // 4.195.576 20 System.String[] // 678.752 26.820 System.Object[] // 643.560 26.815 System.Int32 // 1.608 3 System.Globalization.CultureData // 1.512 27 System.RuntimeType // 830 5 System.Char[] // 580 8 System.Int32[] // 432 2 System.Globalization.NumberFormatInfo // 432 1 System.Collections.Generic.Dictionary + Entry<System.Type, System.Security.Policy.EvidenceTypeDescriptor>[] // 384 3 System.Globalization.CultureInfo // 320 2 System.Threading.ThreadAbortException // 281 1 System.Byte[] // 216 1 System.AppDomain // 208 1 System.Globalization.CalendarData[] // 160 1 System.Exception // 160 1 System.OutOfMemoryException // 160 1 System.Globalization.CalendarData // 160 1 System.StackOverflowException // 9.629.200 135.367 Managed Heap(Free) // 42.248.130 Managed Heap(Size) // 32.618.930 607.562 Managed Heap(Allocated) // 29.360.128 VMMap(Reserved_Stack) // 53.424.128 VMMap(Committed_Dll) // 1.933.312 VMMap(Committed_Heap) // 4.161.536 VMMap(Committed_MappedFile) // 3.723.264 VMMap(Committed_Private) // 5.115.904 VMMap(Committed_Shareable) // 115.458.048 VMMap(Committed_Total) // 47.552.940 Allocated(Total) var parts = lines[1].Split("\t ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(x => x.Replace(".", "").Replace(",", "")).ToArray(); int bytes = int.Parse(parts[0]); int count = int.Parse(parts[1]); Assert.IsTrue(bytes > 24 * 1000 * 1000, $"Allocated strings must be > 25MB but was {bytes} bytes"); Assert.IsTrue(count > 500 * 1000, $"Allocated string cont must be > 500K but was {count}"); }