Сборщик мусора находится в .net для всей системы или для всего приложения? - PullRequest
12 голосов
/ 08 августа 2011

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

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

Я немного смущен этим.

Ответы [ 4 ]

23 голосов
/ 08 августа 2011

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

Не существует общесистемной кучи, поэтому не может быть общесистемного GC.

(Если вы используете несколько CLR в одном и том же процессе, у каждого из них также будет свой собственный GC. Это довольно редкая ситуация.)

7 голосов
/ 08 августа 2011

Существует сборщик мусора для процесса в версии рабочей среды .Net для рабочей станции \ сервера.GC вводит нагрузку на ЦП для каждого управляемого процесса.

Влияет ли это на производительность системы, зависит от того, сколько у вас управляемых процессов и много ли они тратят времени на сбор мусора.Вы можете проанализировать, сколько времени ваш процесс тратит на сбор мусора, проверив счетчик производительности "% времени, потраченного на сборку мусора".

4 голосов
/ 08 августа 2011

Каждое приложение имеет свой собственный экземпляр кучи и среды выполнения .NET, а также имеет собственный поток сборщика мусора.

2 голосов
/ 08 августа 2011

Загляните на эту страницу (http://msdn.microsoft.com/en-us/library/ee787088.aspx),, особенно в разделе Управляемая куча. Это должно ответить на ваши вопросы.

...