Управление памятью .NET - PullRequest
       1

Управление памятью .NET

4 голосов
/ 06 сентября 2011

Может ли кто-нибудь предоставить очень общий обзор управления памятью .NET?

Более конкретно, я ищу обзор управления памятью ..

  • есть ли общая куча .net?
  • на основе приложений кучи?
  • когда я запускаю мое приложение, создается новая куча / выделяется память или память из общей кучи .net?
  • что происходит, когда в куче .net заканчивается исходная память?он запрашивает больше от ОС?
  • Основы были бы отличным началом для меня, чтобы затем продолжить и читать дальше

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Каждый процесс имеет свою собственную кучу - и если после того, как GC очистит все, что может, требуется больше памяти, процесс запрашивает у ОС дополнительную информацию.

Лучший ресурс, о котором я знаю, для такого родаинформация - CLR Джеффри Рихтера через C # книгу.

1 голос
/ 06 сентября 2011

есть ли общая куча .net?

Их много. Обычно вас интересуют кучи поколения 0, 1 и 2, куча больших объектов и куча загрузчика. Поколения помогают сделать сборщик мусора более эффективным. LOH используется для объектов, которые слишком велики для перемещения. В куче загрузчика хранятся значения статических переменных.

основано на приложении кучи?

Нет, они основаны на AppDomain. Домены приложений предоставляют дешевую альтернативу процессу.

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

CLR по умолчанию создает основной AppDomain со связанными кучами, прежде чем ваш код начнет работать.

что происходит, когда в куче .net заканчивается исходная память? он запрашивает больше от ОС?

Да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...