.1.4322mscorlib.dll 0:003> !DumpDomain 793e83f8 Domain: 793e83f8 LowFrequencyHeap: 793e845c HighFrequencyHeap: 793e84b0 StubHeap: 793e8504 Name: 0:003> !DumpDomain 147330 Domain: 00147330 LowFrequencyHeap: 00147394 HighFrequencyHeap: 001473e8 StubHeap: 0014743c Name: appdomain.exe Assembly: 0015c2c0 [appdomain] ClassLoader: 00161008 Module Name 00161d50 d: empappdomain.exe 我们可以看到,System Domain 实际上是专门用于载入 mscorlib.dll 这个 BCL 基础库的;Shared Domain 暂时没有使用;而 Domain 0 则负责运行我们的目标 Assembly。我们可以猜测 System Domain 是 CLR 专门用来载入系统基础库的,而系统将进一步使用此 mscorlib 创建其他 AppDomain 以运行用户目标 Assembly。我们接下来看看 Rotor 的相关代码,是否能够予以印证。 在 CLR 启动时负责加载执行引擎的 EEStartup 函数(vmceemain.cpp:206)中,可以发现此函数首先在进行基础性初始化工作后,调用 SystemDo页码:[1] [2] [3] [4] [5] [6] [7] [8] [9] 第5页、共9页 |