class Program{ static void Main(string[] args) { Console.WriteLine("Before 1st call TestFunc"); TestFunc(); Console.WriteLine("After 1st call TestFunc"); Console.WriteLine("Before 2nd call TestFunc"); TestFunc(); Console.WriteLine("After 2nd call TestFunc"); Console.ReadLine(); } public static void TestFunc() { List<Employee> empList = new List<Employee>(); for (int i = 1; i <= 50000000; i++) { Employee obj = new Employee(); obj.Name = "fjasdkljflasdkjflsdjflsjfkldsjfljsflsdjlkfajsd"; obj.ID = "11111111111111112222222222222222222222222222222"; empList.Add(obj); } }}public class Employee{ public string Name; public string ID;}我只在一個(gè)位置(本地范圍)內(nèi)創(chuàng)建了很多員工,當(dāng)控件返回主功能時(shí),為什么 DOTNET 不釋放內(nèi)存?假設(shè)每個(gè)函數(shù)調(diào)用都使用 1 GB 的內(nèi)存,在 main 函數(shù)結(jié)束時(shí),應(yīng)用程序仍然使用超過 1 GB 的內(nèi)存。為什么在范圍關(guān)閉后 GC 不收集?這可能是一個(gè)簡(jiǎn)單的問題,任何幫助都會(huì)很棒。
C# 內(nèi)存泄漏查詢 - 為什么 GC 不釋放本地范圍的內(nèi)存?
炎炎設(shè)計(jì)
2022-01-09 14:34:36