Ale*_*x K 4 .net memory clr performance
我寻求建议,要么证明或消除我团队中的信念(显然没有理由).相信是开始一个新的.Net应用程序进程是昂贵的内存(每个进程20MB及以上).虽然我指出应用程序显然没有使用那么多(如内存分析器中所见),但他们反驳说它不是应用程序,而是.Net Framework的运行时消耗内存.
这是基于他们在某处听到的东西,所以没有确凿的证据存在,但这种信念在团队中根深蒂固.我已经google了一下,但是我找不到对.Net Framework运行时的每个进程成本的任何认真分析.虽然我根本无法接受每个.Net过程都很昂贵(虽然我愿意承认我可能错了),但我不太了解我的观点.另一方面,我的队友不足以证明我是错的.有谁知道有关此事的任何研究/分析?
谢谢.
嗯,这都是相对的.Windows中的进程通常是一种昂贵的资源,但只有将它与Unix等操作系统进行比较时才会使用.正常的Windows资源共享规则对托管进程有效.物理内存中只有一个副本用于CLR,JIT编译器和任何包含所有.NET框架程序集的程序集中的代码.Windows内存管理器只是在使用这些DLL的所有进程中映射相同的页面.
不共享的是Private Bytes,您可以使用SysInternal的Process Explorer等工具查看此编号..NET进程中较大的私有字节块是
显然,只要在多个进程中使用程序集,使用ngen.exe就可以显着减少专用字节数.AppDomain是.NET减少进程成本并仍然达到隔离级别的方法,用于在ASP.NET和SQL Server等自定义CLR主机中发挥巨大作用.如果您可以选择在线程中运行代码而在另一个进程中运行代码,那么线程应始终是首选.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |