public void LohSize() { using (var testProcess = new TestProcessHandle()) using (var meter = new ManagedMemoryMeter(testProcess.Process.Id)) { var size = DataSize.FromKilobytes(100); var lohSizeBefore = meter.GetManagedMemoryInfo().Heap.LargeObjectHeapSizeBytes; testProcess.EatPrivateMemory(size.Bytes); testProcess.MakeGC(0); var lohSizeAfter = meter.GetManagedMemoryInfo().Heap.LargeObjectHeapSizeBytes; (lohSizeAfter - lohSizeBefore).Should().BeGreaterOrEqualTo(size.Bytes); } }
public void AllocationRate(int mb, int seconds) { var size = DataSize.FromMegabytes(mb); var rate = (size / seconds).Bytes; using (var testProcess = new TestProcessHandle()) using (var meter = new ManagedMemoryMeter(testProcess.Process.Id)) { meter.GetManagedMemoryInfo(); testProcess.EatPrivateMemory(size.Bytes); Thread.Sleep(seconds.Seconds()); testProcess.MakeGC(0); var result = meter.GetManagedMemoryInfo(); (result.Heap.AllocatedBytesPerSecond - rate).Should().BeLessThan(rate / 10); } }
public void GCMeter_Works_for_current_process() { using (var meter = new ManagedMemoryMeter()) { var before = meter.GetManagedMemoryInfo().GC; Console.WriteLine($"Before: {before}"); GC.Collect(0); GC.Collect(1); GC.Collect(2); var after = meter.GetManagedMemoryInfo().GC; Console.WriteLine($"After: {after}"); (after.Gen0CollectionsSinceStart - before.Gen0CollectionsSinceStart).Should().BeGreaterOrEqualTo(3); (after.Gen1CollectionsSinceStart - before.Gen1CollectionsSinceStart).Should().BeGreaterOrEqualTo(2); (after.Gen2CollectionsSinceStart - before.Gen2CollectionsSinceStart).Should().BeGreaterOrEqualTo(1); } }
public void GCMeter_Works() { using (var testProcess = new TestProcessHandle()) using (var meter = new ManagedMemoryMeter(testProcess.Process.Id)) { var before = meter.GetManagedMemoryInfo().GC; Console.WriteLine($"Before: {before}"); testProcess.MakeGC(0); testProcess.MakeGC(1); testProcess.MakeGC(2); var after = meter.GetManagedMemoryInfo().GC; Console.WriteLine($"After: {after}"); (after.Gen0CollectionsSinceStart - before.Gen0CollectionsSinceStart).Should().BeGreaterOrEqualTo(3); (after.Gen1CollectionsSinceStart - before.Gen1CollectionsSinceStart).Should().BeGreaterOrEqualTo(2); (after.Gen2CollectionsSinceStart - before.Gen2CollectionsSinceStart).Should().BeGreaterOrEqualTo(1); } }