GC 会停止 .NET 中的所有应用程序线程吗?

问题描述 投票:0回答:2

我正在阅读关于优化 .Net 应用程序性能的文章。作者指出

它显示了主线程在所有这些 GC 期间做了什么。大多数时候(97.3%)都是“等待”。 这意味着 GC 发生在其他线程上(显然是在 FileProcessing 线程上),并且主线程必须等待 GC 完成。

据我所知.Net GC 是 stop-the-world 收集器。因此,如果您的主线程正在等待,则意味着所有其他线程也必须正在等待。除了 GC 线程本身。

这篇文章是否已经过时或者我理解错误了?

c# .net garbage-collection clr
2个回答
3
投票

https://jetbrains.com/help/profiler/CLR_Activity.html


0
投票
.NET 中的垃圾收集的官方文档

在垃圾收集开始之前,除了触发垃圾收集的线程之外,所有托管线程都将挂起。

下图显示了一个线程触发垃圾收集并导致其他线程被挂起:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.