C # Запрос утечки памяти - Почему GC не освобождает память локальной области видимости? - PullRequest
0 голосов
/ 08 сентября 2018
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;
}

Я создаю множество сотрудников только внутри локации (локальной области), когда элемент управления возвращается к основной функции, почему DOTNET не освобождает память? Допустим, каждый вызов функции использует 1 ГБ памяти, в конце основной функции, но приложение использует более 1 ГБ памяти. Почему GC не собирает деньги после того, как сфера исчезла?

Это может быть простой вопрос, любая помощь будет отличной.

1 Ответ

0 голосов
/ 08 сентября 2018

GC не запускается автоматически в конце вызова области или функции. Согласно документации MS:

Сборка мусора происходит, когда выполняется одно из следующих условий:

• В системе недостаточно физической памяти. Это определяется либо уведомлением о недостаточном объеме памяти из ОС, либо указанием хоста о недостаточном объеме памяти.

• Объем памяти, используемой выделенными объектами в управляемой куче, превышает допустимый порог. Этот порог постоянно регулируется в процессе работы.

• Вызывается метод GC.Collect. Почти во всех случаях вам не нужно вызывать этот метод, потому что сборщик мусора работает непрерывно. Этот метод в основном используется для уникальных ситуаций и тестирования.

Основы сбора мусора

...