c – 假人的高内存使用率
我刚刚重新启动我的firefox网络浏览器,因为它开始出现口吃和放慢速度.由于(我的理解)过多的内存使用,这种情况每隔一天发生一次.
我注意到它开始时需要40M,然后,当我注意到减速时,它会进入 1G和我的机器没有什么可提供的,除非我关闭其他应用程序. 我试图理解为什么要解决这么难的问题背后的技术原因 五个. Mozilla有一个关于高内存使用量的页面: http://support.mozilla.com/en-US/kb/High+memory+usage 但我正在寻找一个更深入和令人满意的解释.不是超级技术,但足以让这个问题更受尊重,请在这里取悦人群. 我已经在思考的一些问题(它们可能很愚蠢,所以放轻松): >当我关闭所有标签时,为什么内存使用量一直没有下降? 应用和语言不可知的答案也非常感谢. 解决方法
浏览器就像人一样 – 他们变老了,他们变得臃肿,而且他们会因为更年轻和更瘦的模特而被抛弃.
Firefox不仅仅是一个浏览器,它还是一个生态系统. 但是,firefox是一个生态系统/平台: 1)写得不好的插件 2)在其中执行的编写错误的JavaScript代码. 3)Adobe Flash作为重量级视频和写得不好的广告脚本的平台,例如“用鸭子打奥萨马·本·拉登”以降低抵押贷款利率并获得免费的iPod *(需要参与). 4)Quicktime和其他媒体播放器. 5)一些嵌入式Java代码. 内存泄漏的描述表明运行错误的脚本或请求更多内存的第三方工具.如果你曾经在Mac上运行Flash,那几乎是一个给定的,CPU利用率为90%. 大多数编程语言的目标不是为了拯救你,而是为你提供自救的工具.你可以用任何语言编写带有内存泄漏的错误和臃肿的代码,包括带有垃圾收集的语言.第三方工具通常没有平台本身那么好.尝试做太多的网页也并不少见. 如果你想做一个实验来证明这一点,可以使用Firefox获取一个mac并转到Stack Overflow这样写得很好的网站并花一个小时.你的内存使用量不应该增长太多.然后花5分钟访问Myspace上的随机页面. 现在让我尝试根据我的猜测回答你的问题,因为我不熟悉源代码
虽然每个浏览器实例都是具有自己内存的独立进程,但单个窗口中的选项卡都在同一进程中. Firefox曾经有某种内存缓存,只是关闭选项卡不会立即从内存缓存中清除相关信息.如果您将选项卡重新打开到同一站点,则可能会获得更好的性能.有一些高级选项允许你禁用它,比如browser.cache.memory.enable.或者只是搜索禁用内存缓存. * Why is there no limits on extensions/themes/plugins memory usage? 出于同样的原因,Windows或Linux没有对应用程序进行审查,您可以在它们上运行.这是一个开放的环境,你承担风险.如果您想要一个“验证”应用程序和扩展程序的环境,Apple可能就是这样:) * Why does the memory usage increase if it's left open for long periods of time? 并非脚本中的所有计算和操作都具有可视化表现形式.一个脚本可能在后台做一些事情(比如请求额外的材料,预取东西,只是bug),即使你没有看到它. * Why are memory leaks so difficult to find and fix? 这是关于簿记.想想你曾经借过的每件物品(甚至是钢笔),或者有人在你的一生中借来的东西.他们都被占了?内存泄漏的方式相同(从系统借用内存),除了传递项目.然后看看你桌子上的东西,你是否留下任何东西,因为’你可能很快就会需要它’,即使你可能不会这样做?相同的故事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |