前一阵子,我发现IE10有时候就像是假死一样地,偶尔无响应,或者是打开网页或者进行任何操作都奇慢无比。我当时没有太在意,因为我家里用的是一台旧电脑,性能不怎么样,以为是偶发的正常的性能问题。可是,随着最近在网上看视频的次数越来越多(最近win8、Surface都发布了嘛,好多视频呢~),我发现这个问题越来越突出,越来越频发,于是我想到了分析进程的等待链,看看IE究竟是在等待什么。要知道,IE总是假死,并且点击了"恢复网页"按钮后还是死掉或者打开奇慢的话,那就真的是不正常了。
windows 8 里面自带的新版任务管理器呀,就已经带有分析进程等待链的功能了。以前我们可能要使用 resmon 资源监视器来完成。
在详细信息里面,我找到iexplore.exe进程,然后右击选择"分析等待链",可以看到,IE的一个或多个线程的确在等待完成网络I/O,而在等待链树状结构中,我们可以看见,它在等待"FlashUtil_ActiveX.exe",PID为2248,可线程信息缺失。
#p#副标题#e#
哈哈,没错,你看见的这个"FlashUtil_ActiveX.exe"就是 Windows 8 内置的 Flash 的针对IE浏览器的插件的执行体。难怪偶尔网页会死掉,并且不可恢复,原来是每次死的时候,都是我在用IE10看视频。我原以为,是IE内置的这个Flash不稳定,想想也觉得有一定的可能性,因为它不论怎样,都还是adobe开发的(我查看了执行体的文件信息)。可是发现中止它以后,没多久还是有这个问题。我又不敢随便将其删除,以免引发Win8里面不可预知的后果。暂且没有做实验研究删除它会有什么结果、而后补装一个Adobe下载的Flash Player又是否会使引发的问题消失。各位如有测试,也欢迎告诉我。
我想,其实我当时应该直接找到这个FlashUtil的进程,然后再看看它究竟在等待什么,也许可以看到它也在等待什么资源,或是用WinDbg看看能否有进一步的诊断。可当问题又重现时,我再看另一个IE的进程,恰好发现该进程得到了完整详细的等待链信息:
可以清楚地看见,其实,FlashUtil_ActiveX.exe 也在等待一个线程,来自 QQExternal.exe. 噢!我这才恍然大悟,问题重现时,我的QQ的确处于运行状态。于是,以后每次发生看Flash视频就死网页的情况时,我结束掉QQExternal进程,问题立马就解决了,网页马上起死回生,加载出来,然后播放视频。
可是这个QQExternal究竟是什么呢?这我不知道,但是通过搜索互联网,我发现了这样的解释:
呵呵,有意思吧,这个进程是为了能让网页的Flash保持稳定的。。。的确有了它会稳定不少,稳定得一动不动。真希望该进程随时都不会出现。
#p#副标题#e#