public static void LargeObjectHeapCompactionModeRoundTrips(GCLargeObjectHeapCompactionMode value) { GCLargeObjectHeapCompactionMode orig = GCSettings.LargeObjectHeapCompactionMode; try { GCSettings.LargeObjectHeapCompactionMode = value; Assert.Equal(value, GCSettings.LargeObjectHeapCompactionMode); } finally { GCSettings.LargeObjectHeapCompactionMode = orig; Assert.Equal(orig, GCSettings.LargeObjectHeapCompactionMode); } }
public static bool Test1() { Console.WriteLine("Setting GCLargeObjectHeapCompactionMode.CompactOnce"); int GCCount = 0; int initialGCCount = GetBlockingGen2Count(); GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GCCount = GetBlockingGen2Count(); if (initialGCCount != GCCount) { Console.WriteLine("A GC happened while setting CompactOnce. Old count {0}, new Count {1}", initialGCCount, GCCount); //skip this run return(true); } Thread.Sleep(100); int currentGCCount = GetBlockingGen2Count(); GCLargeObjectHeapCompactionMode mode = GCSettings.LargeObjectHeapCompactionMode; GCCount = GetBlockingGen2Count(); if (currentGCCount != GCCount) //a GC happened in between these calls { Console.WriteLine("A GC happened while getting Compaction Mode. Old count {0}, new Count {1}", currentGCCount, GCCount); //skip this run return(true); } Console.WriteLine("initial GC count: {0}; currentGCCount: {1}", initialGCCount, currentGCCount); Console.WriteLine(mode); if (currentGCCount == initialGCCount) { if (mode != GCLargeObjectHeapCompactionMode.CompactOnce) { Console.WriteLine("GCLargeObjectHeapCompactionMode should be CompactOnce; instead it is " + mode); return(false); } } else { if (mode != GCLargeObjectHeapCompactionMode.Default) { Console.WriteLine("GCLargeObjectHeapCompactionMode should be Default; instead it is " + mode); return(false); } } return(true); }
public static bool Test2() { Console.WriteLine("Setting GCLargeObjectHeapCompactionMode.CompactOnce"); GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); GCLargeObjectHeapCompactionMode mode = GCSettings.LargeObjectHeapCompactionMode; Console.WriteLine(mode); if (mode != GCLargeObjectHeapCompactionMode.Default) { Console.WriteLine("GCLargeObjectHeapCompactionMode should be CompactOnce; instead it is " + mode); return(false); } return(true); }
private static extern void SetLOHCompactionMode(GCLargeObjectHeapCompactionMode newLOHCompactionMode);
public static void LargeObjectHeapCompactionModeRoundTrips(GCLargeObjectHeapCompactionMode value) { GCLargeObjectHeapCompactionMode orig = GCSettings.LargeObjectHeapCompactionMode; try { GCSettings.LargeObjectHeapCompactionMode = value; Assert.Equal(value, GCSettings.LargeObjectHeapCompactionMode); } finally { GCSettings.LargeObjectHeapCompactionMode = orig; Assert.Equal(orig, GCSettings.LargeObjectHeapCompactionMode); } }
private static void SetLOHCompactionMode(GCLargeObjectHeapCompactionMode value) => RuntimeImports.RhSetLohCompactionMode((int)value);