我正在运行Windows Vista和Visual Studio 2010,使用.NET 4. 2 GB RAM和大约800 MB可用空间.
我创建一个Windows窗体应用程序,并没有添加任何代码.只需在发布模式下编译它,关闭Visual Studio并启动应用程序.如果我查看任务管理器,应用程序会生成3500页错误,仅用于启动和不执行任何操作.
如果我创建一个控制台应用程序并只添加一个Console.ReadLine();以保持打开它会生成1500页错误.
这是.NET的正常行为吗?对我来说,这些数字看起来非常高.
Eri*_*sch 32
您必须了解.NET应用程序的代码多于您编写的代码.它必须加载程序集,解析它,编译它,执行它,然后加载到各种支持库中等等.(其中一些可能需要类似的解析,编译等...),所有这些都会产生页面错误.在宏伟的计划中,3,500并不是那么多的页面错误.
作为一个例子,我尝试了一些"简单"的控制台应用程序.更多,从控制台运行,产生750页错误,这是一个非常小的应用程序,它只是从一个输入回显到另一个输入.它是用C语言编写的,这种语言不是垃圾收集的,没有虚拟机,也不是必须附带的大型运行时库(它是静态链接的,所以它不依赖于运行时).
鉴于.NET所做的一切,只使用1,500页错误执行ReadLine的单行控制台应用程序似乎相当不错.
我甚至不确定你为什么关心页面错误.也许你来自一个页面错误是坏事的平台.在Windows中,进程是"页面支持",这意味着操作系统内存映射可执行文件,然后根据需要加载页面(这包括共享库,以及可执行文件本身,图标,图像,各种事物).当操作系统需要将它们加载到内存中时,每个页面都会生成页面错误.这是正常的,这就是操作系统的工作方式.
我不认为.NET的目标之一就是创建一个"Hello,World!".应用资源最少..NET在启动时做了很多工作,超越了"Hello,World!".应用程序和运行业务应用程序,在资源使用和开发时间之间进行权衡.
结论:.NET在小型应用程序上使用大量资源(内存,页面错误等)是很正常的.在创建"普通"应用程序时,事情会正常化,但它仍会比简单的C或汇编程序消耗更多的资源.