Подтвердить что ты не робот

"Привет мир!!" в .NET 4 генерирует 3500 ошибок страницы

Я использую Windows Vista и Visual Studio 2010, используя .NET 4. 2 GB RAM и около 800 Мб бесплатно.

Я создаю приложение Windows Form и не добавляю к нему никакого кода. Просто скомпилируйте его в режиме выпуска, закройте Visual Studio и запустите приложение. Если я посмотрю в диспетчере задач, приложение вызвало 3500 ошибок страницы для начала и ничего не делает.

Если я создаю консольное приложение и просто добавлю Console.ReadLine();, чтобы он был открыт, он генерирует 1500 ошибок страницы.

Это обычное поведение для .NET? Эти цифры кажутся мне смехотворными.

4b9b3361

Ответ 1

Вам нужно понять, что для приложения .NET больше кода, чем только код, который вы написали. Он должен загружать сборку, анализировать ее, компилировать, выполнять, а затем загружать в различные библиотеки поддержки и т.д. (Некоторые из них могут потребовать аналогичного анализа, компиляции и т.д.), И все это создает ошибки страницы, 3500 - это не так много ошибок страниц в великой схеме вещей.

В качестве примера я попробовал несколько "простых" консольных приложений. Более того, запускается с консоли, генерирует 750 ошибок страницы, и это довольно крошечное приложение, которое делает немного больше, чем эхо от одного входа к другому. Он написан на языке C, который не является сборкой мусора, не имеет виртуальной машины или большой библиотеки времени выполнения, которая должна быть с ней (она статически связана, поэтому она не зависит от времени выполнения).

Учитывая все, что делает .NET, однострочное консольное приложение, которое просто делает ReadLine, используя только 1500 ошибок страницы, кажется довольно хорошим.

Я даже не уверен, почему вас волнуют ошибки страниц. Возможно, вы идете с платформы, где ошибки страниц - это плохо. В Windows процессы "поддерживаются страницей", что означает, что память ОС сопоставляет исполняемый файл, а затем требует загрузки страниц по мере необходимости (это включает в себя общие библиотеки, а также сам исполняемый файл, значки, изображения и всевозможные вещи). Каждая из этих страниц генерирует ошибку страницы, когда ОС необходимо загрузить их в память. Это нормально, и то, как работает ОС.

Ответ 2

Я не думаю, что одной из целей .NET было создание "Hello, World!". приложение с минимальными ресурсами..NET делает много работы по запуску, чтобы выйти за рамки "Привет, мир!". приложений и запускать бизнес-приложение, делая компромисс между использованием ресурсов и временем разработки.

Заключение. Это нормально, что .NET использует много ресурсов (памяти, ошибок страниц и т.д.) для небольших приложений. Вещи нормализуются при создании "нормальных" приложений, но все равно будут потреблять больше ресурсов, чем простой C или ассемблер.