Firefox 3中的JavaScript的某种任务管理器?
最近,我在Ubuntu Hardy Heron上遇到了Firefox 3的问题。
我将单击一个链接,该链接将挂起一段时间。我不知道它是Firefox 3中的错误还是运行太多客户端JavaScript的页面,但我想尝试一下调试一下。
因此,我的问题是"是否有办法为Firefox 3提供某种流程浏览器或者任务管理器?"
我希望能够通过该页面(或者该页面中引起CPU /内存使用的任何内容)上的JavaScript来查看哪些选项卡使用了我的处理器的百分比。
有人知道这样做的插件或者类似的东西吗?还有其他人以其他方式进行过这种检查吗?
我了解FireBug,但是我无法想象我将如何使用它来指出哪个选项卡正在使用大量资源。
有什么建议或者见解吗?
解决方案
回答
这可能是真棒的firefox3 fsync"错误",这是一大堆失败。
总之
- Firefox3将其书签和历史记录保存在SQLite数据库中
- 每次加载页面时,它都会多次写入此数据库
- SQLite深切关心我们不会丢失书签,因此每次写入时,都会指示内核将其数据库文件刷新到磁盘并确保已完全写入
- 像这样被刷新时,Linux的许多变体都会刷新每个文件。如果我们有后台任务在做任何类型的磁盘密集型工作,则这可能需要一分钟或者更长时间。
- 当刷新发生时,内核使firefox等待,这将锁定UI。
回答
Firefox没有"进程浏览器"工具。但是http://developer.mozilla.org/en/docs/Venkman具有概要分析模式,我们可以使用该模式查看chrome(表示非内容,即不是网页)脚本所花费的时间。
根据我的了解,DTrace对于这种事情也可能有用,但是它需要创建一个自定义版本,并可能向源代码添加其他探针。我自己还没有玩过。
回答
对此进行了详尽的讨论,解释了影响FF 3.0之前版本的所有与fsync相关的问题。总的来说,从那以后我也再也没有看到这种行为了,如果系统也没有执行IO密集型任务,那么这根本就不是问题。 Firebug / Venkman提供了不错的调试器,但如果为其他人的代码IMO找出这类问题,他们将很痛苦。
不过,我也希望有一种简单的方法可以按选项卡查看Firefox中的CPU利用率,因为我经常发现FF吃了100%CPU,但不知道是哪部分引起了问题。
回答
So, my question is, is there a way to have some kind of process explorer, or task manager sort of thing for Firefox 3?
由于Firefox的构建方式,目前尚无法实现。但是新的Internet Explorer 8 Beta 2和刚刚宣布的Google Chrome浏览器正朝着这个方向发展,因此我认为Firefox也将朝着这个方向发展。
这是来自Mozilla的John Resig和jQuery在该主题上成名的帖子(Google Chrome Process Manager)。
回答
XUL Profiler是一个了不起的扩展,可以指出扩展以及客户端JS在CPU方面已成为香蕉。它不是基于每个选项卡的,而是基于每个脚本的(或者如此)。通常,我们可以手动将这些.js脚本与选项卡或者扩展名相关联。
还值得一提的是,Google Chrome浏览器内置了一个非常好的任务管理器,可以为每个选项卡,扩展名和插件提供内存和CPU使用率。
[XUL Profiler] is a Javascript profiler. It shows elapsed time in each method as a graph, as well as browser canvas zones redraws to help track down consuming CPU chunks of code. Traces all JS calls and paint events in XUL and pages context. Builds an animation showing dynamically the canvas zones being redrawn.
从FF 3.6.10开始,它不是最新的,因为它不再被标记为兼容。但是它仍然可以正常工作,我们可以使用同样出色的MR Tech Toolkit扩展程序覆盖不兼容问题。