.NET 4中的“Hello,World !!”会生成3500页错误

我正在运行Windows Vista和Visual Studio 2010,使用.NET 4. 2 GB RAM和大约800 MB可用空间。

我创建一个Windows窗体应用程序,并没有添加任何代码。 只需在发布模式下编译它,关闭Visual Studio并启动应用程序。 如果我查看任务管理器,应用程序会生成3500页错误,仅用于启动和不执行任何操作。

如果我创建一个控制台应用程序,只需添加一个Console.ReadLine(); 保持打开状态会产生1500页的错误。

这是.NET的正常行为吗? 对我来说,这些数字看起来非常高。

您必须了解.NET应用程序的代码多于您编写的代码。 它必须加载程序集,解析它,编译它,执行它,然后加载到各种支持库等等。(其中一些可能需要类似的解析,编译等…),所有这些都会产生页面错误。 在宏伟的计划中,3,500并不是那么多的页面错误。

举个例子,我尝试了一些“简单”的控制台应用程序。 更多,从控制台运行,产生750页错误,这是一个非常小的应用程序,它只是从一个输入回显到另一个输入。 它是用C语言编写的,这种语言不是垃圾收集的,没有虚拟机,也不是必须附带的大型运行时库(它是静态链接的,所以它不依赖于运行时)。

鉴于.NET所做的一切,只使用1,500页错误执行ReadLine的单行控制台应用程序似乎相当不错。

我甚至不确定你为什么关心页面错误。 也许你来自一个页面错误是坏事的平台。 在Windows中,进程是“页面支持”,这意味着操作系统内存映射可执行文件,然后根据需要加载页面(这包括共享库,以及可执行文件本身,图标,图像,各种事物)。 当操作系统需要将它们加载到内存中时,每个页面都会生成页面错误。 这是正常的,这就是操作系统的工作方式。

我不认为.NET的目标之一就是创建一个“Hello,World!” 应用资源最少。 .NET在启动时做了很多工作,超越了“Hello,World!”。 应用程序和运行业务应用程序,在资源使用和开发时间之间进行权衡。

结论:.NET在小型应用程序上使用大量资源(内存,页面错误等)是很正常的。 在创建“普通”应用程序时,事情会正常化,但它仍然会比简单的C或汇编程序消耗更多的资源。