4

据我了解,在 .NET 中,每个进程有一个 GC,每个进程有一个托管堆(它分为 SOH 和 LOH)。

所以我对此有几个问题:

  1. 如果我们在一个进程中有几个应用程序域,那么每个域将在其他域之间共享堆。安全吗?域之间的这种分离是如何执行的?

  2. 当 GC 开始工作时,它会暂停工作线程。因此,如果一个应用程序域需要经常启动 GC,它将影响根本不需要垃圾收集的其他域。再一次,域之间的 0、1、2 代或所有对象的 0 代是否来自存储在同一个 0 代区域中的不同域的任何分隔?

  3. 为什么 GC 和托管堆是按进程而不是按域实现的?

4

0 回答 0