Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
Beispiel #5
0
 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);
     }
 }
Beispiel #6
0
 private static void SetLOHCompactionMode(GCLargeObjectHeapCompactionMode value) =>
 RuntimeImports.RhSetLohCompactionMode((int)value);