fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-04-25
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
阅读:3867回复:11

[Nightly] Firefox 33.0a 实现每个附加组件独立放置于一个 compartment

楼主#
更多 发布于:2014-06-26 10:52
什么是 Compartment(下称区块)?简单来说就是 Firefox 里面 Javascript 代码所占用内存放置的一个位置,一般会有多个区块,比如一个网站里面 JS 代码所使用内存就会放在一个区块里面,属于 content 的区块,而 Firefox 自身的 JS 代码所占用内存也会放置在一个或多个区块当中,属于 chrome 的区块,不同的区块可以通过附加组件,脚本之类的互相引用(reference)。

在 Firefox 15 当中,实现了浏览器主动切断不必要的 content 和 chrome 区块之间的联系,从而防止产生 zombie compartment。现在 Firefox 33.0 实现每个附加组件一个区块(compartment per addon),这就意味着我们可以更好监控每个附加组件对性能的影响以及它们的内存占用,这也意味着有一些附加组件可能会挂掉

开启方法是在 about:config 找到:
dom.compartment_per_addon
双击改为 true。

之后继续使用,如果一些附加组件受此影响功能不正常或挂掉,那有可能是这个引起。错误控制台等其他日常监控手段应该都可以看到异常。一般是和 window 有关的全局变量和对象出了问题。用 Add-on SDK 写的并且调用 .jsm 模块的扩展已经实现了这个功能,所以不会有问题。现在主要针对传统的 XUL Overlay 的扩展。

为什么要这么做?
1、最主要是为了能够让附加组件兼容多进程项目 e10s,否则传统扩展可能大多都会挂掉。
2、可以更好监控每个附加组件内存占用,以往附加组件内存占用都是和 Firefox 的 chrome 代码混在一起,实现以后 about:memory 可以将其区分开来了。
3、更好监测每个附加组件的性能,可以针对每个附加组件所在区块进行监测,比如附加组件运行的时长,telemetry 今后就可以对附加组件发挥威力了。


Bug 990729 - Associate JS compartments with addon XUL code and components/modules

消息来自 google 网上论坛 firefox-dev 版块

最新喜欢:

fiagfiag pein0sagapein0s... dgoddgod
Firefox More than meets your experience
文科
千年狐狸
千年狐狸
  • UID39959
  • 注册日期2013-10-17
  • 最后登录2019-07-27
  • 发帖数2069
  • 经验1328枚
  • 威望4点
  • 贡献值340点
  • 好评度256点
  • 最爱沙发
  • 社区居民
  • 忠实会员
1楼#
发布于:2014-06-26 12:10
about:addons-memory :: Firefox 附加组件
这个扩展可以更好的发挥作用啦
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
2楼#
发布于:2014-06-26 12:18
就是不知道多少扩展会挂掉。
无尽的冬季
火狐狸
火狐狸
  • UID28470
  • 注册日期2009-04-05
  • 最后登录2020-04-12
  • 发帖数126
  • 经验38枚
  • 威望0点
  • 贡献值12点
  • 好评度2点
  • 社区居民
  • 忠实会员
3楼#
发布于:2014-06-26 20:35
就是打开了还是有一部分扩展会在e10s挂掉,例如super drag,Scriptish,不知道有没有替代的。
pein0saga
狐狸大王
狐狸大王
  • UID25456
  • 注册日期2008-07-17
  • 最后登录2020-05-16
  • 发帖数305
  • 经验93枚
  • 威望0点
  • 贡献值38点
  • 好评度5点
  • 社区居民
  • 忠实会员
4楼#
发布于:2014-06-27 13:45
文科:about:addons-memory :: Firefox 附加组件
这个扩展可以更好的发挥作用啦
回到原帖
我这里about:addons-memory在每夜版无限转圈圈。。。
文科
千年狐狸
千年狐狸
  • UID39959
  • 注册日期2013-10-17
  • 最后登录2019-07-27
  • 发帖数2069
  • 经验1328枚
  • 威望4点
  • 贡献值340点
  • 好评度256点
  • 最爱沙发
  • 社区居民
  • 忠实会员
5楼#
发布于:2014-06-27 16:23
pein0saga:我这里about:addons-memory在每夜版无限转圈圈。。。回到原帖
测试了一下 我也是这样
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
6楼#
发布于:2014-06-27 17:38
文科:测试了一下 我也是这样回到原帖
about:addons-memory 扩展在 nightly 已经挂掉,在控制台可看到一个错误。
文科
千年狐狸
千年狐狸
  • UID39959
  • 注册日期2013-10-17
  • 最后登录2019-07-27
  • 发帖数2069
  • 经验1328枚
  • 威望4点
  • 贡献值340点
  • 好评度256点
  • 最爱沙发
  • 社区居民
  • 忠实会员
7楼#
发布于:2014-06-27 19:02
hzzhaiqi:about:addons-memory 扩展在 nightly 已经挂掉,在控制台可看到一个错误。回到原帖
╮( ̄▽ ̄")╭   看来要等作者更新了
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-04-22
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
8楼#
发布于:2014-06-28 09:56
进化了
z344257899
小狐狸
小狐狸
  • UID32277
  • 注册日期2010-03-12
  • 最后登录2017-10-13
  • 发帖数91
  • 经验14枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
9楼#
发布于:2014-07-01 21:05
hzzhaiqi:就是不知道多少扩展会挂掉。回到原帖
为什么要这么做?
1、最主要是为了能够让附加组件兼容多进程项目 e10s,否则传统扩展可能大多都会挂掉。

有这条,应该不会挂很多
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
10楼#
发布于:2014-07-01 21:16
z344257899:为什么要这么做?
1、最主要是为了能够让附加组件兼容多进程项目 e10s,否则传统扩展可能大多都会挂掉。

有这条,应该不会挂很多
回到原帖
对,多进程是趋势。只是感觉大量的 firefox 扩展已经进入沉睡阶段,不像 chrome 那样活跃。
thresh
小狐狸
小狐狸
  • UID37462
  • 注册日期2011-09-30
  • 最后登录2020-03-23
  • 发帖数56
  • 经验48枚
  • 威望0点
  • 贡献值18点
  • 好评度2点
11楼#
发布于:2014-07-06 21:20
文科:about:addons-memory :: Firefox 附加组件
这个扩展可以更好的发挥作用啦
回到原帖
这个拓展导致我的firefoxCPU占用直接上50%。而且内存溢出飞快。。。。只能临时用了就得关闭
游客

返回顶部