我创建了2个.NET应用程序并在一台机器上运行它们 - 有多少CLR和gc将存在?
另外:我想了解一下Windows如何处理COM组件和CLR的背景信息.希望有人可以详细说明CLR如何在内存中加载,以及如果我在运行此命令时列出多个CLR实例,这意味着什么:
tasklist /m mscor*
Run Code Online (Sandbox Code Playgroud)
实际上是多个CLR还是单个CLR作为所有.NET进程的COM服务器?
Bri*_*sen 10
每个进程都有自己的CLR副本作为托管进程.但是,由于CLR实际上只是几个DLL,Windows将能够在进程之间共享DLL.有关详细信息,请参阅:http://msdn.microsoft.com/en-us/magazine/cc301727.aspx
除了Portable Executable(PE格式)之外,托管exe还有一个额外的CLR头.操作系统现在能够确定启动的exe是否是"托管"exe,因此在后台加载CLR并赋予其控制权.
从上面可以得出,每个托管可执行文件的进程都有自己的CLR副本(2个Dll).ManagedExecutable1可能正在使用CLR v1,而ManagedExecutable2可能正在使用CLR v2.截至目前,它们尚未共享.
垃圾收集器是CLR的一部分,因此在托管可执行文件的进程之间也是不同的.
| 归档时间: |
|
| 查看次数: |
4196 次 |
| 最近记录: |