Change logic around GC.Collect in objwriter (#83249)
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Fri, 10 Mar 2023 05:41:36 +0000 (14:41 +0900)
committerGitHub <noreply@github.com>
Fri, 10 Mar 2023 05:41:36 +0000 (14:41 +0900)
src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs

index c5e164c8d914ac2625f107ce29a50821c4a518de..7e9c491cf4fd7e3c9b4ea158e3b1d981017a2288 100644 (file)
@@ -1149,15 +1149,16 @@ namespace ILCompiler.DependencyAnalysis
                     }
                 }
 
-                if (logger.IsVerbose)
-                    logger.LogMessage($"Emitting debug information");
-
                 // Native side of the object writer is going to do more native memory allocations.
                 // Free up as much memory as possible so that we don't get OOM killed.
                 // This is potentially a waste of time. We're about to end the process and let the
                 // OS "garbage collect" the entire address space.
-                var gcMemoryInfo = GC.GetGCMemoryInfo();
-                if (gcMemoryInfo.TotalCommittedBytes > gcMemoryInfo.TotalAvailableMemoryBytes / 2)
+                var gcInfo = GC.GetGCMemoryInfo();
+
+                if (logger.IsVerbose)
+                    logger.LogMessage($"Memory stats: {gcInfo.TotalCommittedBytes} bytes committed, {gcInfo.TotalAvailableMemoryBytes} bytes available");
+
+                if (gcInfo.TotalCommittedBytes > gcInfo.TotalAvailableMemoryBytes / 5)
                 {
                     if (logger.IsVerbose)
                         logger.LogMessage($"Freeing up memory");
@@ -1165,6 +1166,9 @@ namespace ILCompiler.DependencyAnalysis
                     GC.Collect(GC.MaxGeneration, GCCollectionMode.Aggressive);
                 }
 
+                if (logger.IsVerbose)
+                    logger.LogMessage($"Emitting debug information");
+
                 objectWriter.EmitDebugModuleInfo();
 
                 succeeded = true;