gpt4 book ai didi

.net - 有关 .NET 应用程序域的问题

转载 作者:行者123 更新时间:2023-12-02 15:10:07 25 4
gpt4 key购买 nike

我知道,一旦启动.NET应用程序,CLR就会自动创建3个应用程序域,它们是系统域、共享域和默认域。

系统域:

  • 创建共享域和默认域
  • 提供加载、卸载应用域的功能
  • 将 mscorlib.dll 加载到共享域
  • 所有其他域的簿记
  • 保留字符串文字的簿记
  • 预先创建某些类型的异常,例如内存不足异常、堆栈溢出异常等。

共享域:

  • 包含域中立代码。
  • 包含基本类型,如String、enum、Int32等。

默认域:

  • .NET 应用程序代码在其中运行。

这里有几个关于它们的问题:

  • 这 3 个域之间的关系是什么?有等级之类的吗?基于系统域的职责,我认为进程中的AppDomains应该在逻辑上(或者物理上在内存中)像一样组织,树的根是系统域,并且所有其他域都是其子域。

  • “interned string”是什么意思?举个例子可能会更好。

  • AppDomain是用来隔离的,跨域通信并不是那么容易进行的。所以我想知道,由于基本类型包含在共享域中,而不是默认域或任何其他可以运行代码的 AppDomain 中,所以我相信 CLR 必须以独特的方式对待共享域,以实现轻松的跨域通信。这是真的吗?

谢谢。

最佳答案

我会将其添加为评论而不是答案,但我还不允许发表评论。抱歉。

跨应用程序域内存访问(与远程处理相反)很困难,这是设计使然的。

如果你想要跨域单例,我找到了this little gem

关于.net - 有关 .NET 应用程序域的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com