2014-09-12 2 views
-2

Я разработал приложение, написанное в .NET 4.0/WPF/WCF. Это приложение Telecom, которое связано с большими УАТС и предоставляет пользователям возможность звонить из приложения. Много управляемых событиями программирования используется (много параллельных задач библиотеки, асинхронные вызовы), так что любые изменения, сделанные на жестком телефоне отражает на приложения в режиме реального времени и т.д. ...Огромная разница в потреблении памяти между машинами x64 и x86

Приложение отлично работает высокопроизводительные машины.

Моя конфигурация ноутбук Оперативная память: 8 Гб, процессор: Intel i7, логический процессор: 8, ОС: Windows 7 SP1 (x64)

На моем ноутбуке приложение расходуется память примерно 150 MB. Однако на другом компьютере, где конфигурация является оперативной памятью: 4 ГБ (годная для использования 2,9 ГБ), двухъядерный i3, Windows 7 SP1 (x86), потребление памяти составляет приблизительно 600 МБ. Не могу понять, почему такая разница !!!

Любые указатели, пожалуйста?

+1

Используйте профайлер памяти, например, один из [Red Gate] (http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/) или [Jet Brains] (http://www.jetbrains.com/dotmemory/) – oleksii

+0

Мои вопросы больше касаются архитектуры архитектуры x64 и x86 ... ее после всего того же приложения, которое потребляет 4 раза памяти на компьютерах x86. – JSK

+0

Тяжелые приложения с указателем могут удвоить использование памяти. Вы говорите о частной памяти или о чем? В любом случае, как правило, не вызывает большой озабоченности, если ваша системная память не является недостаточной - как Windows, так и .NET будут счастливо выпускать большую часть «использованной» памяти, если система будет помещена под давлением памяти. Профилирование - общий первый шаг - вы можете использовать бесплатный CLRProfiler, чтобы узнать, что отличается между этими двумя процессами, и, конечно же, инструменты, такие как VMMap, чтобы увидеть различия между использованием виртуальной памяти. – Luaan

ответ

1

Во-первых, вам нужно выяснить, действительно ли это проблема.

. NET мусорная коллекция пытается изо всех сил избегать пути. Одна из вещей, которые она делает, заключается в том, чтобы избежать очистки, когда не требуется чистка. Если у вас нет 2,9 ГБ неиспользованных и только 600 МБ, используемых в этом процессе, сборщик мусора может просто не беспокоиться.

Итак, вытащите профилировщики памяти и выясните, есть ли у вас проблемы или нет.

+0

Хорошо может быть путаница ... 2.9gb есть ** общая доступная память ** из ** 4gb на x86 ** ОС Windows 7. Использование ЦП не является проблемой, но зато память, которая замедляет работу системы; когда я убиваю приложение, память освобождается почти на 18-20%. – JSK

+0

Я перехожу по ссылке: http://msdn.microsoft.com/en-gb/magazine/cc163715.aspx могут быть ответы на некоторые вопросы. – JSK

Смежные вопросы