Я пытался сравнить объем памяти между приложением VB6 и .Net приложением. Пытаюсь определить, в чем разница между ними в среднем.
Код .Net по большей части является прямым переводом VB6 и по большей части содержит те же инструкции, которые были бы запрограммированы на C#. Таким образом, хотя это сравнение яблок и апельсинов, это сравнение программ, которые функционально (если не логически) эквивалентны.
Я использую Обозреватель процессов, чтобы определить использование памяти приложениями, однако есть несколько областей, которые меня озадачили:
На данный момент я понял, что WS Total включает как WS Private, так и WS Shareable. Так что использование только WS Total может быть обманчивой мерой. Я также читал из таких вопросов, как Объем памяти .Net exe, что рабочий набор .Net обычно больше, чем должен быть. Будет ли создание экземпляра процесса в среде с нехваткой памяти, скажем, на виртуальной машине со 128 МБ, уменьшит размер рабочего набора до минимума?
Мы будем благодарны за любую помощь или понимание.





Это хорошее эссе от Марка Руссиновича.
Вы можете вручную уменьшить рабочий набор вашего приложения, используя вызов Win32 API SetProcessWorkingSetSize (GetCurrentProcess (), -1, -1). Это то, что Windows будет делать в любом случае, когда системе не хватает памяти, но контроль, когда это происходит самостоятельно, позволяет сократить рабочий набор вашего .NET-приложения до минимального размера для целей исследования.
Ваш второй URL не работает. Можете подробнее как уменьшить рабочий набор?
Ссылка была разорвана навсегда, поэтому я добавил для использования вызов Win32 API.
Я прочитал это эссе, и это не произвело на меня большого впечатления, поскольку он не вдавался в подробности. Какие библиотеки DLL, например, занимали больше ресурсов? И анализ был немного некорректным, в моем случае исходный код как минимум максимально соответствует оригиналу.