aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
阅读:3486回复:5

使用addon sdk开发的扩展会用掉多少内存?

楼主#
更多 发布于:2014-11-19 02:01
前情见 https://www.v2ex.com/t/145411

稍微查了下
google只能搜到abp作者在2年前的一个测试
https://adblockplus.org/blog/measuring-the-memory-use-of-an-sdk-jetpack-based-add-on

于是重新做了个简单的测试
只实现一个最简单的功能:给body加上5px的红色边框
分别用addon sdk(jetpack扩展,cfx和jpm两种打包方式)、手写bootstrap、greasemonkey脚本实现

addon sdk的版本参考
https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab
https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL

手写bootstrap的代码参考
https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox

firefox选用32位win下的34.0
firefox本体内存占用看process explorer显示的private bytes
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

新建profile
分别单独安装各扩展
只打开test.html
扩展的内存占用看about:memory中显示的数值
扩展    firefox本体
cfx             2.76m   143m
jpm             2.79m   148m
手写bootstrap   0.04m   126m
油猴            1.05m   130m

手写bootstrap的内存占用极少(虽然这个和我没做shutdown时的清理有关)
addon sdk由于需要额外加载内置模块
导致总体占用会比油猴脚本来得多

同时安装4个扩展
并另装一个jetpack扩展减少about:memory中jetpack内存统计的干扰(具体原因见后)
cfx             0.48m
jpm             0.93m
手写bootstrap   0.04m
油猴            1.06m

同时安装4个扩展
使用about:addons-memory来查看扩展的内存占用
https://addons.mozilla.org/en-US/firefox/addon/about-addons-memory/
cfx             437.8k
jpm             440.8k
手写bootstrap   39.3k
油猴            1.12m

可以看出这两组数据差不多(除了jpm,原因不知)
不过这里有另一个问题
为什么单独安装时jetpack扩展占用会多那么多?
0.48m和2.76m相差了一个数量级
这就需要另做一组测试
用cfx打包一个只有console.log()的扩展
复制20份,修改为不同id
再分别安装不同数量后查看内存占用
扩展数量    firefox本体     扩展占用总量    占用内存最多的1个   其余
0           117m            -               -                   -
1           120m            1.20m           -                   -
2           123m            2.39m           2.10m               0.29m
3           125m            3.54m           2.96m               0.58m(0.29*2)
4           128m            4.73m           3.85m               0.87m(0.29*3)
5           130m            5.91m           4.74m               1.16m(0.29*4)
10          151m            11.94m          9.32m               2.62m(0.29*9)
20          176m            23.89m          18.35m              5.54m(0.29*19)

很明显about:memory统计jetpack扩展占用的内存时
把addon sdk的那一堆模块全部累计到第一个jetpack扩展的内存占用上去了
而且即使扩展没用到的模块,也一样加载进内存了

总结
把油猴脚本转为相应的addon sdk扩展需要多占用2m左右的内存
如果很在意firefox的内存占用
那就尽量使用油猴脚本、overlay扩展、手写bootstrap扩展、uc脚本
附件名称/大小 下载次数 最后更新
test.zip (147KB)  4 2014-11-19 01:20

最新喜欢:

fang5566fang55...
刀锋上追梦
火狐狸
火狐狸
  • UID42690
  • 注册日期2013-12-06
  • 最后登录2022-08-25
  • 发帖数204
  • 经验180枚
  • 威望0点
  • 贡献值60点
  • 好评度11点
  • 社区居民
  • 忠实会员
1楼#
发布于:2014-11-19 07:34
路过
Atester
狐狸大王
狐狸大王
  • UID45325
  • 注册日期2014-04-03
  • 最后登录2016-09-14
  • 发帖数391
  • 经验358枚
  • 威望0点
  • 贡献值56点
  • 好评度23点
  • 社区居民
  • 忠实会员
2楼#
发布于:2014-11-19 09:04
哪有那么容易把扩展都转成脚本啊……
Doing good is all our mission!
文科
千年狐狸
千年狐狸
  • UID39959
  • 注册日期2013-10-17
  • 最后登录2019-07-27
  • 发帖数2069
  • 经验1328枚
  • 威望4点
  • 贡献值340点
  • 好评度256点
  • 最爱沙发
  • 社区居民
  • 忠实会员
3楼#
发布于:2014-11-19 13:51
跪,求知欲太强了
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
4楼#
发布于:2014-11-19 23:48
Atester:哪有那么容易把扩展都转成脚本啊……回到原帖
其实之前在讨论的是把油猴脚本转为jetpack扩展
而不是反过来……

不过理论上所有bootstrap扩展,包括jetpack扩展都可以转为uc脚本
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
5楼#
发布于:2014-11-20 00:03
文科:跪,求知欲太强了回到原帖
虽然油猴脚本转jetpack扩展对fennec来说不划算
https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis
看起来fennec也可以用那些message manager
改成手写bootstrap扩展内存方面不会大很多的
值得考虑
特别是在目前fennec没有油猴、scriptish也有问题的情况下
游客

返回顶部