我正在阅读关于优化 .Net 应用程序性能的文章。作者指出
它显示了主线程在所有这些 GC 期间做了什么。大多数时候(97.3%)都是“等待”。 这意味着 GC 发生在其他线程上(显然是在 FileProcessing 线程上),并且主线程必须等待 GC 完成。 据我所知.Net GC 是 stop-the-world 收集器。因此,如果您的主线程正在等待,则意味着所有其他线程也必须正在等待。除了 GC 线程本身。
它显示了主线程在所有这些 GC 期间做了什么。大多数时候(97.3%)都是“等待”。 这意味着 GC 发生在其他线程上(显然是在 FileProcessing 线程上),并且主线程必须等待 GC 完成。
这篇文章是否已经过时或者我理解错误了?
:
下图显示了一个线程触发垃圾收集并导致其他线程被挂起: