Поскольку мы изменили сборку нашего приложения Windows Forms на 64-разрядную и развернули его, несколько пользователей жалуются, что он чувствует себя вялым и иногда зависает на срок до 10 или даже 15 секунд.
Запуск64-разрядные и 32-разрядные версии располагаются рядом на идентичных виртуальных машинах на одном и том же хосте, и для запуска требуется примерно одинаковое время, и они реагируют одинаково - при условии, что имеется достаточно свободной оперативной памяти.Но 64-битная версия потребляет примерно в 1,5 раза (что измеряется в «частных байтах») столько же, сколько 32-битная версия.
Теперь, когда я уменьшаю объем свободной оперативной памяти виртуальных машин, 64-битная версия занимает многодольше начинать - что, кажется, имеет смысл, так как при более высоком потреблении памяти ему придется делать больше GCing, чтобы справиться с тем небольшим объемом памяти, с которым он работал.
Единственная теория, которую я могув итоге получается, что у тех, кто замерзает, слишком мало памяти для работы нашего 64-битного приложения, что приводит к обмену и / или GCing.
Что означает
- , которые они должны закрытьдругие приложения или получить больше оперативной памяти
- мы должны попытаться уменьшить объем памяти нашего приложения
или какие еще могут быть различия между 32-разрядными и 64-разрядными, чтоможет заморозить 64-битную версию?
Кажется, что нет никакой разницы между 32-битными и 64-битными сборщиками мусора, кроме объема памяти, который ониuse.
NB Это приложение работает в .Net 4.6 с использованием настроек GC по умолчанию.