白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
45楼#
发布于:2011-04-28 10:37
huhuhu:楼上的同学,你的第二个测试代码中还是用了预读,和第一测试的效果是一样的,我也不会javascript,就昨天才看的,所以更高级的模拟浏览行为还写不出来。我把无预读的代码贴出来,时间间隔在100ms在我这里十分流畅(P4 3.0 Ram 1G)。你的机器估计更没问题。
<html>
<head>
<script type="text/javascript">
//aimg =new Array;
//for(i=0;i<300;i++){aimg[i]=new Image();aimg[i].src="file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/img/"+i+".jpg"}//关闭预读
var c=0
var t
function timedCount()
{

var w= window.open("file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/img/"+c+".jpg","test","chrome,width=800,height=600");
c=c+1
t=setTimeout("timedCount()",100)
if(c>100){clearTimeout(t);w.close()//这里可以强制释放内存release()
}
}

/*function release()
{
	for(i=0;i<300;i++){aimg[i].src=null}
}*/                                      // 强制释放内存

</script>
</head>

<body>

<form>
<input type="button" value="开始!" onClick="timedCount()">
</form>

<p>请点击上面的按钮。幻灯片形式展示图片。</p>

</body>

</html>
回到原帖



嘿嘿,因为不会嘛,所以就想当然地改了改。
用新的测试页面测试,Fx呈阶段性波动,稳定。chrome还是太平公主。
奇怪的是,虽然说是直接打开文件,但是Fx播放时硬盘灯一直闪个不停,而chrome则是以大概3秒的周期闪烁,而且10ms测试下cpu占用明显比fx低。

二者的文件读取策略不同么?图像解码器也不同?

另外,这样的测试仍然是没有多少指导意义,只能用来测试浏览器的特定行为。因为在浏览时,随着网页图片的加载,这些是不会释放的,即使是chrome也不会(除非切换tab)

这个测试所能得到的结论就像上面说的一样,只能说chrome放在内存的东西和fx不一样而已。

希望fx5能给出一点更给力的解决方案……至少不要让硬盘这样辛苦……
-いたんですか? -ええ、ずっと
huhuhu
火狐狸
火狐狸
  • UID34430
  • 注册日期2010-11-04
  • 最后登录2013-11-28
  • 发帖数119
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
46楼#
发布于:2011-04-28 10:37
白左


嘿嘿,因为不会嘛,所以就想当然地改了改。
用新的测试页面测试,Fx呈阶段性波动,稳定。chrome还是太平公主。
奇怪的是,虽然说是直接打开文件,但是Fx播放时硬盘灯一直闪个不停,而chrome则是以大概3秒的周期闪烁,而且10ms测试下cpu占用明显比fx低。

二者的文件读取策略不同么?图像解码器也不同?

另外,这样的测试仍然是没有多少指导意义,只能用来测试浏览器的特定行为。因为在浏览时,随着网页图片的加载,这些是不会释放的,即使是chrome也不会(除非切换tab)

这个测试所能得到的结论就像上面说的一样,只能说chrome放在内存的东西和fx不一样而已。

希望fx5能给出一点更给力的解决方案……至少不要让硬盘这样辛苦……
回到原帖
你的第二个测试代码,可以在每一次打开窗口后,强制释放掉已经解码的内存,实际上这才是我想要的,刚刚一直在MDN找,想找找有没有函数可以返回图片是否正在显示,如果有就好办了,我们可以用脚本来强制释放他,不知道大家有没有知道的。你有兴趣可以在测一测,就是在c=c+1前加一句,aimg[c].src=null;就好了。
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
47楼#
发布于:2011-04-28 10:37
你们就不要测试了,结论在N久之前就有了,问下这里版主即可

说了Fx是即时载入页面所有资源,并解析排版.....

某位所说的硬盘灯狂亮,是因为内存用光了,于是大量使用页面文件导致

我电脑开机至今8小时,打开楼主提供的资源包8小时,一直毫无压力.....浏览异常顺利,是因为我的内存有4个G,且完全不使用虚拟内存所导致。实际上该页面吃资源总共也就1G左右....在我的机子上则吃大约12%左右的内存

而另一位同学的测试代码,其实没有多少区别,正因为大量使用虚拟内存,一是因为物理内存用光了,而是因为系统对软件使用的内存调度。

总结一下:
1. firefox很简单,打开该页面,需要1G的内存,剩下的就看你物理内存的大小,以及系统内存调度的能力.....
2. firefox是一次性全部载入页面所有资源并解析排版
3. firefox内存释放有些问题
4. 4.2G真的很蛋疼,属个别现象
CooB
千年狐狸
千年狐狸
  • UID2829
  • 注册日期2005-02-06
  • 最后登录2023-05-23
  • 发帖数2176
  • 经验140枚
  • 威望0点
  • 贡献值18点
  • 好评度3点
  • 社区居民
  • 忠实会员
48楼#
发布于:2011-04-28 10:37
fang大大推荐的memory fox扩展确实很棒,重启的动作都省了。
a136811568
火狐狸
火狐狸
  • UID36079
  • 注册日期2011-04-22
  • 最后登录2011-09-27
  • 发帖数152
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
49楼#
发布于:2011-04-28 10:37
对你们的说的不懂

     我只想问傻逼网站搞这么大一个网页干啥?
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
50楼#
发布于:2011-04-28 10:37
havanna:你们就不要测试了,结论在N久之前就有了,问下这里版主即可

说了Fx是即时载入页面所有资源,并解析排版.....

某位所说的硬盘灯狂亮,是因为内存用光了,于是大量使用页面文件导致

我电脑开机至今8小时,打开楼主提供的资源包8小时,一直毫无压力.....浏览异常顺利,是因为我的内存有4个G,且完全不使用虚拟内存所导致。实际上该页面吃资源总共也就1G左右....在我的机子上则吃大约12%左右的内存

而另一位同学的测试代码,其实没有多少区别,正因为大量使用虚拟内存,一是因为物理内存用光了,而是因为系统对软件使用的内存调度。

总结一下:
1. firefox很简单,打开该页面,需要1G的内存,剩下的就看你物理内存的大小,以及系统内存调度的能力.....
2. firefox是一次性全部载入页面所有资源并解析排版
3. firefox内存释放有些问题
4. 4.2G真的很蛋疼,属个别现象
回到原帖


4.2=1.x+2.5,还要我怎么说……2.5G怎么来的,上面的测试已经非常清楚了

没错,硬盘灯狂闪就是内存太小,虚拟内存交换的缘故。

现在我们可以假设这70M的图片在Fx完全解码需要2.5G空间(因为无论在怎样的条件下测试,总是增加了2.5G提交)
你没有虚内,只用1G,你确认测试条件和我们相同?假设相同,那么Fx在分配虚内的时候应该有奇怪的问题导致多出了1G多的占用,这是bug?

先不说别的,刚才用6.0a1无扩展测试,显示图片的效率差不多是相同的(虽然同样条件下fx的cpu占用略高一些),按照上面的实际体验,预读图片是完全没有必要的,300以上的cpu就能胜任实时解码的要求。

然后就是decodeondraw的范围确实是应该不能按tab来算,一个tab,能同时浏览到的图片不会太多,而如果要考虑快速卷动,全部载入后在内存和虚内之间交换数据的开销都比实时解码多……

诚然如果人人都是8G内存,节约电的全部载入法自然是比chrome不考虑节能的实时解码来得先进。问题是不是人人都是8G内存……

希望在今后的版本里能增加类似chrome行为的浏览方式,或者至少给一个开关供用户选择,否则就只能依靠扩展实现了……当然,现在我们就可以自己改源代码,不过很显然我没有那个水平……

不知道关于图片的解码/浏览/内存问题有没有人反映到bugzilla?我现在就希望mozilla能听见有人在抱怨,至于能否,是否会解决,那是另一回事……
-いたんですか? -ええ、ずっと
dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2023-02-03
  • 发帖数1195
  • 经验59枚
  • 威望0点
  • 贡献值26点
  • 好评度10点
51楼#
发布于:2011-04-28 10:37
havanna:你们就不要测试了,结论在N久之前就有了,问下这里版主即可

说了Fx是即时载入页面所有资源,并解析排版.....

某位所说的硬盘灯狂亮,是因为内存用光了,于是大量使用页面文件导致

我电脑开机至今8小时,打开楼主提供的资源包8小时,一直毫无压力.....浏览异常顺利,是因为我的内存有4个G,且完全不使用虚拟内存所导致。实际上该页面吃资源总共也就1G左右....在我的机子上则吃大约12%左右的内存

而另一位同学的测试代码,其实没有多少区别,正因为大量使用虚拟内存,一是因为物理内存用光了,而是因为系统对软件使用的内存调度。

总结一下:
1. firefox很简单,打开该页面,需要1G的内存,剩下的就看你物理内存的大小,以及系统内存调度的能力.....
2. firefox是一次性全部载入页面所有资源并解析排版
3. firefox内存释放有些问题
4. 4.2G真的很蛋疼,属个别现象
回到原帖

硬盘灯常亮是因为内存不足调用页面缓存这谁不知道?

现在说的是它比不是其它浏览器,甚至比不上之前的版本,这足够让人诟病了。
要是稍微试试就知道你的“结论”【2. firefox是一次性全部载入页面所有资源并解析排版】在3.6下面不是真的。

所以我更认为这是bug不是机制本身的问题。
以前firefox跳个票的时间现在可以发布几个正式版了-_-
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
52楼#
发布于:2011-04-28 10:37
白左

我们不说物理内存或者虚拟内存,我们只说firefox运行该页面所吃的资源总量
[quote]*完全加载:完全浏览完页面,提交最终涨到4.2G左右……(- -|||)并且随时间推移不会释放
回到原帖

这句话是你自己说的,页面提交总量4.2G!也就是说firefox吃资源总量为4.2G。但在我这里所吃的资源总量是12%-13%左右,也就1G左右...

我并没否认其他,我只是觉得4.2G的总量,觉得不可思议。你可以重新看我在这主题下的所有帖子,我质疑的是4.2G究竟是通用行为,还是个别行为。所以希望2G物理内存2G虚拟内存的玩家也来测试下该页面,是否将4G总量吃光?

另外,更正下我前面说的某句话,虚拟内存是有系统来调度的,并非firefox分配虚拟内存.........cache并非虚拟内存,免得引发某些人借题发挥
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
53楼#
发布于:2011-04-28 10:37
dindog
硬盘灯常亮是因为内存不足调用页面缓存这谁不知道?

现在说的是它比不是其它浏览器,甚至比不上之前的版本,这足够让人诟病了。
要是稍微试试就知道你的“结论”【2. firefox是一次性全部载入页面所有资源并解析排版】在3.6下面不是真的。

所以我更认为这是bug不是机制本身的问题。
回到原帖

那么sorry,加上firefox4版本号,我这里没有3.6环境,没法测试
你确认3.6不是一次性载入并解析排版的?确认3.6打开楼主提供的测试网页,不会有1G左右(物理内存+虚拟内存)的资源占用?
上面某热心网友的测试,是javascript来控制网页行为。
huhuhu
火狐狸
火狐狸
  • UID34430
  • 注册日期2010-11-04
  • 最后登录2013-11-28
  • 发帖数119
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
54楼#
发布于:2011-04-28 10:37

那么sorry,加上firefox4版本号,我这里没有3.6环境,没法测试
你确认3.6不是一次性载入并解析排版的?


ff3.6下读取时确实是一次性载入了所图片并解压了,但是后来又全部释放了(看我的前面的贴图,一张是正在解码,一张是解码完毕),这一点我也很奇怪,既然后来都释放了,为什么前面又在解压?我想是考虑了物理内存不够所以优先选择释放内存。如果猜测是对的,我想这个算法是合理的。你的机器有4G内存正好可以试试啊。我贴的第一个有预读的网页,你把图片加多点,直到超过你的物理内存不就知道现在的版本在你的机器上是不是也释放内存了吗?大家都是说自己的情况,没有谁无聊到这里来扯谎的。我们多讨论讨论,对自己多了解firefox一点也有好处吧!
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
55楼#
发布于:2011-04-28 10:37
huhuhu

ff3.6下读取时确实是一次性载入了所图片并解压了,但是后来又全部释放了(看我的前面的贴图,一张是正在解码,一张是解码完毕),这一点我也很奇怪,既然后来都释放了,为什么前面又在解压?我想是考虑了物理内存不够所以优先选择释放内存。如果猜测是对的,我想这个算法是合理的。你的机器有4G内存正好可以试试啊。我贴的第一个有预读的网页,你把图片加多点,直到超过你的物理内存不就知道现在的版本在你的机器上是不是也释放内存了吗?大家都是说自己的情况,没有谁无聊到这里来扯谎的。我们多讨论讨论,对自己多了解firefox一点也有好处吧!
回到原帖

你理解有误了,firefox4的内存释放的bug,是被确认了的
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
56楼#
发布于:2011-04-28 10:37

这句话是你自己说的,页面提交总量4.2G!也就是说firefox吃资源总量为4.2G。但在我这里所吃的资源总量是12%-13%左右,也就1G左右...

我并没否认其他,我只是觉得4.2G的总量,觉得不可思议。你可以重新看我在这主题下的所有帖子,我质疑的是4.2G究竟是通用行为,还是个别行为。所以希望2G物理内存2G虚拟内存的玩家也来测试下该页面,是否将4G总量吃光?

另外,更正下我前面说的某句话,虚拟内存是有系统来调度的,并非firefox分配虚拟内存.........cache并非虚拟内存,免得引发某些人借题发挥



本论坛上传图片很麻烦的,你能不能仔细看看图片再评论,我那句话说是“firefox吃的资源总量为4.2G“了?
-いたんですか? -ええ、ずっと
dindog
千年狐狸
千年狐狸
  • UID30818
  • 注册日期2009-10-24
  • 最后登录2023-02-03
  • 发帖数1195
  • 经验59枚
  • 威望0点
  • 贡献值26点
  • 好评度10点
57楼#
发布于:2011-04-28 10:37

噗,你没忘掉自己说的话吧。

我不关心内存实际是如何调用的,那是编程的人和系统的事,作为一个普通用户,我只能就我自己的体验作准。

除了firefox 4以后的版本外,所有其它我试过的浏览器都没出现浏览器卡死,系统只剩下读写动作,这还不足够?
[quote]好吧,从I/O消耗来看,个人宁愿浏览器尽量使用内存,而不要频繁的从缓存读到内存.....

楼主用专门的软件测下chrome打开那页面,拖动,硬盘是否一直频繁的读操作?
以前firefox跳个票的时间现在可以发布几个正式版了-_-
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
58楼#
发布于:2011-04-28 10:37



本论坛上传图片很麻烦的,你能不能仔细看看图片再评论,我那句话说是“firefox吃的资源总量为4.2G“了?

提交=物理内存+虚拟内存
firefox提交总量=firefox正常运行所需总量
引用你的话,就是firefox浏览完该页面,最终吃掉4.2G资源...
havanna
狐狸大王
狐狸大王
  • UID22502
  • 注册日期2008-01-01
  • 最后登录2015-10-20
  • 发帖数544
  • 经验14枚
  • 威望0点
  • 贡献值2点
  • 好评度0点
59楼#
发布于:2011-04-28 10:37

这只能说这页面很变态,你的内存又偏小,firefox瞬时载入页面资源并排版情况下,由于物理内存不足,系统请求虚拟内存后的结果.....

chrome等不卡,正是因为它们并非一次性载入并排版的结果....但在我机子上,chromium的I/O占用很高(并非瞬时),cache放入内存又非常的麻烦....这也正是我为什么去年用了大半年chromium后,又退回firefox的原因.....
 补充说明下,I/O占用,包括程序本身的缓存文件读写及其系统调配虚拟内存的读写.....这要分清楚....

另外,在你的机子上4.0打开该页面卡死,3.6则不卡死,是这个意思?
游客

返回顶部