Почему в C# не собирается мусор статических полей?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему в C# не собирается мусор статических полей?

Сообщение Anonymous »


В книге «C#12 в двух словах» написано:

В куче также хранятся статические поля. В отличие от объектов, размещенных в куче (которые можно собирать мусором), они живут до завершения процесса.

Однако, если мы не будем использовать статическое поле позже в коде, я не понимаю, почему сборщик мусора не освободит пространство, которое он использовал в куче?

Думаю, мой вопрос будет легче понять с помощью примера:
с использованием системы; публичный класс MyClass { // Статическое поле public static int Counter = 0; публичный МойКласс() { МойКласс.Счетчик++; } публичная недействительность MyMethod() { Console.WriteLine("МойМетод"); } } Программа общественного класса { public static void Main(string[] args) { Console.WriteLine(MyClass.Counter); MyClass myInstance = новый MyClass(); мойЭкземпляр.МойМетод(); Console.WriteLine(MyClass.Counter); // Начиная с этой строки, MyClass не будет использоваться, объект MyClass, на который ссылается myInstance // поэтому теперь можно собирать мусор. // Однако MyClass.Counter не будет собирать мусор, поскольку это статическое поле?! // Статическое поле может быть «объектом большего размера», чем просто целое число, и оно будет // плохо не собирать мусор, верно? целое число1 = 10; целое число2 = 20; целое число = число1 + число2; Console.WriteLine($"Сумма {number1} и {number2} равна {sum}."); } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»