【发布时间】:2013-10-22 12:33:06
【问题描述】:
据我所知,在 .NET 4.0 之前,事情很简单:一个 进程 只能托管一个 CLR。
但从 4.0 版开始,一个进程可以承载多个 CLR。
在这种情况下,我猜每个 CLR 有一个堆,因为每个 CLR 都有自己的状态和自己的 GC,有自己的内存管理方式和自己的收集周期,所以共享内存似乎是不可能的。
1) 您能否确认这是最终的情况还是更微妙?
2) 托管在同一个进程中的两个 CLR 是严格隔离的还是可以共享任何东西? (特别是如果他们有相同的版本,他们是否可以互相了解)
我猜答案是肯定的和肯定的(孤立的),但我想确定一下。
感谢您的任何见解。
【问题讨论】:
-
@JimMischel:如果这是来自 Skeet 大师,那一定是真的。 :) 太糟糕了,您指向的讨论没有被正确标记,所以我会找到它。我已经更新了它的标签。谢谢:)
-
@JimMischel:仍然是隔离问题... :)
-
Google 在查找未标记的内容方面做得很好。
标签: .net heap-memory clr