gpt4 book ai didi

c# - .Net CLR 卸载与关闭?

转载 作者:行者123 更新时间:2023-12-02 00:35:04 25 4
gpt4 key购买 nike

What Causes Finalize Methods to Be Called ?

此问题的 2 个答案(共 4 个)是:

  • CLR 正在卸载 AppDomain 当 AppDomain 卸载时,CLR 会考虑AppDomain 中没有任何内容可以作为根,并且垃圾收集由以下内容组成所有世代都被执行。

  • CLR 正在关闭 当进程正常终止时,CLR 将关闭(例如,与通过任务管理器进行外部关闭相反)。

我假设CLR正在卸载AppDomain是在程序(例如控制台[exe])关闭时(通过按关闭/正常结束程序)

CLR 正在关闭怎么样? 继续上面的 [Exe] 程序类比:

  • 这是什么意思?我如何关闭 CLR ...?
  • [在 IIS 世界中]这是否意味着 IIS 重置?

请问我可以稍微解释一下吗?

最佳答案

AppDomain 是一个比 Process 更细粒度的单元。一个Process可以有多个AppDomain实例,每个实例都可以单独卸载。

CLR 关闭是进程终止。

AppDomain卸载是各个AppDomain分别进行的。

(尽管在不检查文档的情况下,我个人不会保证所有终结器等在任何一种情况下都会执行)

作为示例,我在长时间运行的自更新 Windows 服务中使用多个 AppDomain 实例;当检测到新版本时,它会拉下新的二进制文件,生成一个新的 AppDomain,使其运行,将 future 的操作切换到新的 AppDomain,并卸载旧的 AppDomain(当运行操作完成时)。

关于c# - .Net CLR 卸载与关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10054866/

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