.NET сборщик мусора разница между x86 / x64. х64 не собирает - PullRequest
2 голосов
/ 27 октября 2010

У меня есть приложение WPF, которое не похоже на сборщик мусора в системах x64.Я тщательно протестировал его на компьютерах с архитектурой x86 и уверен, что это не проблема программирования, использование памяти будет расти, а затем, как я ожидаю, будет собираться мусор.Целевая платформа = 'Любой ЦП'

Я обнаружил, что могу устранить это поведение на машинах x64, компилируя с target = x86.x64 или «Любой ЦП» не могут освободить память.

Я также заметил во время своих исследований, что создание дочернего домена приложения и минимизация рабочего набора приложения вручную работает на x86, но игнорируется на системах x64.Пока я не установлю цель = x86.

Кто-нибудь знает, почему существует такое поведение?Нужно ли избегать «Любой процессор» или x64?

1 Ответ

2 голосов
/ 27 октября 2010

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

Если у рассматриваемой машины (машин) много памяти, нет никакой причины для выполнения GC.На компьютерах с архитектурой x86 обычно возникает проблема с нехваткой памяти, поскольку общий допустимый объем памяти для процесса значительно меньше (обычно 2 ГБ), а общий объем для системы в целом низкий (~ 3 ГБ).64-битные системы не имеют этих ограничений, поэтому GC, скорее всего, будет работать реже.

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

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