垃圾收集器是在单独的进程中运行吗?垃圾收集器是否在单独的进程中启动?例如:如果我们尝试测量某些代码所花费的处理时间,并且在此过程中垃圾收集器开始收集,它会在新进程中还是在同一进程中开始?它的工作原理如下吗?//Code(Process1)-->GarbageCollectorRun(Process1)//Code(Process1)或类似的东西?//代码(进程1)-->垃圾收集器运行(进程2)//代码(进程1)垃圾收集器运行在与触发垃圾收集的线程相同的进程上。它停止所有当前线程并自行执行。它当然不会启动您在Windows中看到的另一个进程。来自MSDN:在垃圾收集开始之前,除了触发垃圾收集的线程外,所有托管线程都被挂起。(这只适用于工作站,正如DrKoch指出的那样)。服务器具有运行垃圾收集的后台线程。如果您在参考文档中搜索“并发垃圾收集”,您将使用支持此功能的“GC线程”文本。如果您愿意,可以强制垃圾回收在单独的线程中运行。把它放在你的app.config中:(来自这个答案)另请阅读.NETFramework4.5includesnewgarbagecollectorenhancementsforclientandserverapplications,assuggestedbyAdamHouldsworth,aboutsince.NET4.5Changesinthewayofthegarbagecollectorworkssince.首先,进程和线程是有区别的。正如@CodesInChaos指出的那样,每个进程都有自己的地址空间,因此在单独的进程中运行GC没有意义。如果我们谈论线程:“工作站”和“服务器”之间存在差异。在工作站上,它在其中一个用户线程上运行:收集发生在触发垃圾收集的用户线程上。在服务器上,它在单独的专用线程中运行:收集发生在多个专用线程上,这些线程以THREAD_PRIORITY_HIGHEST优先级线程运行。您的机器是否被视为“服务器”取决于配置:架构的运行时配置元素请参阅垃圾收集基础C#学习教程就这些:垃圾收集器是否在单独的进程中运行?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
