Почему 64-битная версия приложения WinForms иногда зависает на много секунд - PullRequest
1 голос
/ 19 июня 2019

Поскольку мы изменили сборку нашего приложения Windows Forms на 64-разрядную и развернули его, несколько пользователей жалуются, что он чувствует себя вялым и иногда зависает на срок до 10 или даже 15 секунд.

Запуск64-разрядные и 32-разрядные версии располагаются рядом на идентичных виртуальных машинах на одном и том же хосте, и для запуска требуется примерно одинаковое время, и они реагируют одинаково - при условии, что имеется достаточно свободной оперативной памяти.Но 64-битная версия потребляет примерно в 1,5 раза (что измеряется в «частных байтах») столько же, сколько 32-битная версия.

Теперь, когда я уменьшаю объем свободной оперативной памяти виртуальных машин, 64-битная версия занимает многодольше начинать - что, кажется, имеет смысл, так как при более высоком потреблении памяти ему придется делать больше GCing, чтобы справиться с тем небольшим объемом памяти, с которым он работал.

Единственная теория, которую я могув итоге получается, что у тех, кто замерзает, слишком мало памяти для работы нашего 64-битного приложения, что приводит к обмену и / или GCing.

Что означает

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

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

Кажется, что нет никакой разницы между 32-битными и 64-битными сборщиками мусора, кроме объема памяти, который ониuse.

NB Это приложение работает в .Net 4.6 с использованием настроек GC по умолчанию.

...