小编nac*_*eka的帖子

为什么每个进程有一个 GC 和一个托管堆?

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

所以我对此有几个问题:

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

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

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

.net garbage-collection memory-management

5
推荐指数
0
解决办法
919
查看次数