为什么我的网络浏览器会导致整个计算机挂起?

avi*_*irk 5 windows browser freeze process

我已经多次观察到这种情况发生:单个程序没有响应,所有其他进程都正常运行,然后整个系统挂起。

我认为这是因为没有响应的进程正在使用所有可用资源,并且没有为其他进程留下任何资源。

但这不应该只适用于需要占用所有可用内存 (RAM) 的大型程序吗?

为什么当我刚启动 Firefox 或 Internet Explorer 这些看起来较小的程序时会发生这种情况?

有什么办法可以防止程序和计算机挂起吗?

Tam*_*man 3

挂起通常不仅仅由资源使用引起。

我们这里讨论的不是短暂的冻结或缓慢,而是实际的挂起时间超过几秒钟。内存使用通常不是造成这种情况的主要原因,因为 Windows 7 会导致使用过多内存的程序崩溃。磁盘垃圾通常不是造成这种情况的主要原因,因为此类请求是异步的,并且某些必要的部分保留在内存中。

因此,您实际上必须需要一台旧计算机,才能让缓慢的情况看起来像挂起一样。或者是一个积极的资源消耗者,但你可以提前预料到它;正常使用时发生的挂起通常不是上面列出的情况......

挂起通常是由驱动程序引起的。

想象一下拥有 8 GB、八核处理器和 SSD RAID。我们现在容易挂起吗?不。

驱动程序(尤其是网络驱动程序)通常是导致挂起的罪魁祸首,因为由于驱动程序中的错误,它们正在等待应立即执行的某个操作以超时。即使对于您看不到任何资源使用情况的短暂挂起,DPC Latency Checker和更详细的LatencyMon也能出色地找出驱动程序的哪些延迟过程调用速度较慢。

这里的问题是人们不知道如何解决这个问题,我想说你可以通过这篇解释 XPerf 的文章来分析 Windows 上的任何性能问题。但人们通常最多只使用资源监视器,它提供的详细信息远不如 Process Explorer、Process Monitor 和 XPerf 等工具...

让我举一个如何解决典型挂起的例子。

  • 我哥哥抱怨说,关闭他的一个互联网标签导致了 10 秒的冻结。

  • 关闭选项卡后他无法移动鼠标。

  • 我使用Windows SDK中的XPerf在非常低的水平上分析了他的系统的性能。

    • 开始跟踪并确保它跟踪尽可能多的信息。

    • 走到浏览器那里,让他浏览一段时间,出现问题时给我打电话。

    • 立即停止了踪迹。

  • 关闭 Facebook 选项卡会导致此行为。关闭 Google 标签不会。

  • 网络驱动程序上可见一个尖峰。

    • 在更详细的分析中,这是由于同时关闭的连接过多造成的。

      这是有道理的,Facebook 做了很多异步 AJAX 调用。

    • 当连接关闭时,驱动程序应该向目的地发送 FIN 或 RST 数据包。可能是等待完成或重置连接的确认执行得不好......

  • 更新了网络驱动,问题解决。