- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚重新启动了我的 firefox 网络浏览器,因为它开始卡顿和变慢。由于(我的理解)过度使用内存,这种情况每隔一天发生一次。我注意到它启动时需要 40M,然后,当我注意到速度变慢时,它会转到 1G,除非我关闭其他应用程序,否则我的机器将无能为力。我试图了解为什么它如此难以解决的技术原因
Mozilla 有一个关于高内存使用率的页面:
http://support.mozilla.com/en-US/kb/High+memory+usage
但我正在寻找更深入和令人满意的解释。不是 super 技术,但足以给予这个问题更多的尊重并取悦这里的人群。
一些我已经在思考的问题(它们可能很愚蠢,所以放轻松):
与应用程序和语言无关的答案也非常感谢。
最佳答案
浏览器就像人一样 - 他们会变老,会变得臃肿,并且会被更年轻、更精简的模型所抛弃。
Firefox 不仅仅是一个浏览器,它还是一个生态系统。虽然我觉得最近的版本比较臃肿,但核心产品总体上是稳定的。
但是,firefox 是一个生态系统/平台:
1) 插件写得不好
2) 在其中执行的 JavaScript 代码编写不当。
3) Adobe flash 作为重量级视频和编写糟糕的广告脚本的平台,例如“用鸭子击中奥萨马·本·拉登以降低您的抵押贷款利率并获得免费的 iPod*(需要参与)”。
4) Quicktime 和其他媒体播放器。
5) 一些嵌入式 Java 代码。
内存泄漏的描述表明脚本运行异常或第三方工具请求更多内存。如果您曾经在 Mac 上运行过 Flash,那几乎是必然的,而且 CPU 利用率高达 90%。
大多数编程语言的目标不是拯救你,而是为你提供拯救自己的工具。您可以用任何语言编写带有内存泄漏的糟糕和臃肿的代码,包括具有垃圾收集功能的代码。第三方工具通常没有像平台本身那样经过充分测试。试图做太多事情的网页也并不少见。
如果您想做一个实验来证明这一点,请使用装有 Firefox 的 Mac 并访问 Stack Overflow 等写得很好的网站并花一个小时。您的内存使用量不应增长太多。然后花 5 分钟访问 Myspace 上的随机页面。
现在让我根据我的猜测尝试回答您的问题,因为我不熟悉源代码
- When I close all tabs, why doesn't the memory usage go all the way down?
虽然每个浏览器实例都是一个独立的进程,拥有自己的内存,但单个窗口中的选项卡都在同一个进程中。 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?
并非脚本中的所有计算和操作都有视觉表现形式。一个脚本可能在后台做一些事情(比如请求额外的 Material ,预取东西,只是错误),即使你没有看到它。
* Why are memory leaks so difficult to find and fix?
这是关于簿记的。想想你曾经借过的每一件元素(甚至是一支笔),或者你一生中有人从你那里借过的东西。都算进去了吗?内存泄漏的方式相同(您从系统借用内存),只是您传递项目。然后看看你 table 上的东西,你有没有因为“你可能很快就会需要它”而把任何东西留在身边,尽管你可能不会?同样的故事。
关于c++ - 假人的高内存使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638100/
我们有一个 SQL 服务器,其中包含大约 40 个不同的数据库(每个数据库大约 1-5GB)。该服务器是8核2.3G CPU和32Gigs RAM。 27Gig 固定到 SQL Server。 CPU
我通过创建一个简单的循环并在数组中添加元素来测试 Java 8 并行流 API 的性能。 与非并行相比,我获得了巨大的性能提升。 但是当我检查我的任务管理器时,我看到了一个不受控制的 CPU 使用率,
我在使用 JFX 应用程序时遇到了一些问题。在我的本地开发系统(Linux)上,我的应用程序的 CPU 使用率约为 0-2%。当我在客户 Windows 虚拟机系统上安装并运行我的应用程序时,CPU
我在 unix 上工作。我想知道进程当前的 cpu 使用情况。我知道 ps 给出了在进程启动之前使用的 cpu 平均值 - 这不是当前使用情况。 有没有办法从 top 命令只打印 cpu 而无需 10
我尝试对许多文件进行哈希处理,但它没有使用满 CPU 能力。它只消耗25%。我测试将繁重的进程移动到线程中。但仍然没有什么不同。我来自 nodejs 使用 sharp 库。有同样的任务。它消耗所有的C
有没有办法在 CentOS 中获取 CPU 使用率?我需要解析这些信息并将其从 Perl 脚本中绘制出来,因此它最好是一个简单的工具,可以打印出一个单一的输出。 最佳答案 更简单,看/proc/loa
早上好。 目前我正在 Ubuntu 服务器 11.10 中运行 Java Web 应用程序。对于我的 Java 应用程序,我使用的是 apache、tomcat 和 mysql。 在过去的几周里,我的
我想做的事 我有一个计算密集型 OCaml 应用程序,我希望它在后台运行而不影响正常的计算机使用。我想为用户提供两个选项: (1) 应用程序仅在 CPU 使用率几乎为 0% 时运行; (2) 应用程序
我使用Couchdb创建了一个私有(private)NPM镜像,但我发现beam.smp将我的 CPU 使用率保持在 100%,有没有办法降低它,比如 50%? 非常感谢你。 最佳答案 您不能直接限制
我正在 docker 容器内构建一个项目,在创建容器时没有任何资源限制。当我监控它时,我看到了不同的 CPU 使用率结果。 来自 ctop 来自 Grafana(全节点导出器图表) 来自 cAdvis
我需要在 Web 开发编码 session 期间收集有关 Firefox CPU 使用率的数据,我想知道是否可以监视特定 firefox 插件的 CPU 使用率。 现在我正在使用 windows 的
R 是单线程的。 使用 R,如何检查 Windows 和 Linux 中有多少内核/线程正在运行 R? (或运行了多少卢比) 使用 R,如何检查 Windows 和 Linux 中运行 R 的每个内核
我正在尝试像示例中那样测试 Kubernetes HPA here kubectl run php-apache --image=gcr.io/google_containers/hpa-exampl
在我们的办公室,我们有一个开发服务器:Win 2k8 server R2 - Coldfusion 9(.0.0) - MySQL 5 ... 几乎每天早上上类时,我都会发现服务器的 CPU 为 50
我有一组 cpu 消耗执行,每个执行都在低优先级的线程中运行。这些线程将在一个进程(如 IIS)中运行,该进程具有许多我不想减慢它们速度的其他线程。我想计算所有其他线程的 cpu 使用率,如果它大于
我是 azure 云的新手,我已经部署了我的第一个辅助角色。 在我的本地系统中需要 30 分钟才能完成的过程在 azure 辅助角色上需要 1 个多小时。 为了查找问题,我已访问辅助角色的远程桌面。我
这是我的测试 boost::tribool 示例: #include #include "boost/logic/tribool.hpp" int main() { boost::logic::tr
我正在使用 docker 远程 API 来检索正在运行的容器的统计信息。对于 CPU 使用情况,我得到的例子是: "cpu_stats": { "cpu_usage": { "to
我是 azure 云的新手,我已经部署了我的第一个辅助角色。 在我的本地系统中需要 30 分钟才能完成的过程在 azure 辅助角色上需要 1 个多小时。 为了查找问题,我已访问辅助角色的远程桌面。我
我知道意外的无限循环通常会导致 CPU 使用率较高。但是,我不太明白为什么。谁能给我解释一下吗? 最佳答案 CPU 在执行该循环(永远不会结束)时无法执行任何其他操作。即使您使用的是抢占式多任务系统(
我是一名优秀的程序员,十分优秀!