Memory Chrome应用程序的内存报告

Memory Chrome应用程序的内存报告,memory,google-chrome-extension,Memory,Google Chrome Extension,我们创建了一个应用程序,我们希望很快向公众发布它。 一些测试人员报告了非常高的内存使用率,所以我检查了自己的Chrome浏览器 当我查看“任务管理器”时,我发现我们正在创建的应用程序消耗了大量内存(约300MB)! 这让我有些担心,所以我试着详细检查一下 当转到chrome://extensions/,我看到唯一的活动视图是背景页。 使用堆分析器,我发现这个后台脚本只消耗了大约20MB。 这显然是很多,但远远不够 从20MB到300MB丢失的内存在哪里 使用chrome://memory-red

我们创建了一个应用程序,我们希望很快向公众发布它。 一些测试人员报告了非常高的内存使用率,所以我检查了自己的Chrome浏览器

当我查看“任务管理器”时,我发现我们正在创建的应用程序消耗了大量内存(约300MB)! 这让我有些担心,所以我试着详细检查一下

当转到
chrome://extensions/
,我看到唯一的活动视图是背景页。 使用堆分析器,我发现这个后台脚本只消耗了大约20MB。 这显然是很多,但远远不够

从20MB到300MB丢失的内存在哪里

使用
chrome://memory-redirect/
,我可以看到,当应用程序刚刚启动时,内存分割是:

--------------------------------------------
| Resident | Shared  | Private  | Virtual  |
--------------------------------------------
| 36,864k  | 84,992k | 15,360k  | 839,680k |
--------------------------------------------
运行一段时间(6小时)后,它是:

今天早些时候的另一个发现。 我们的背景页面非常“小”,小于20MB。尽管应用程序的全球消费量不断增加,但总体而言,这一数字仍然很小。我们发现,当我们从应用程序中打开新选项卡时,就会发生这种情况。全球消费迅速增加。我们预计,当我们关闭选项卡时,它会下降。事实并非如此。它会下降一点,但当标签关闭时,超过50%的内存会留在我们的应用程序中


下面是一个为任何想“查看”内容的人提供详细信息/帮助的示例。

您的扩展是否与任何内容脚本或背景页面通信

拍摄堆快照时,此处定义的MB数与扩展所消耗的内存总量不同。它只类似于你的堆统计数据有多大

尝试按如下方式拍摄堆快照:

  • 从扩展页单击背景页以打开inspector
  • 选择“探查器”选项卡
  • 拍摄一次堆快照,等待它完成
  • 稍微玩一下你的应用程序,以确保你的背景页面正在做一些工作
  • 拍摄另一个堆快照以进行记录。等它结束
  • 在屏幕底部有一个比较下拉框,因此选择比较而不是摘要
  • 现在分析您的数据,以查看已分配和释放的数据
    由于正在发生泄漏,您应该会看到一些不一致之处。我认为这不是DOM泄漏,因为您的应用程序在后台页面中(除非您的注入元素),如果是,请检查摘要中的HTML项目,以查看创建了多少项。

    该应用程序确实有内容脚本。我会按照你的要求去做,但这并不能回答未命中280MB的位置,是吗?它在某个地方泄漏了,请尝试运行堆更长时间,完全(广泛)使用你的应用程序,然后再次运行。比较堆并查看哪个函数消耗大量周期。我有一个扩展,它有一个弹出窗口(webapp版本的页面),可以抓取页面并消耗内存(仍然不知道为什么,我不知道如何使用堆分析器)它所做的一件奇怪的事情是,它似乎将内存使用情况传递给背景页,即使背景页中没有任何内容,也没有!(在您关闭选项卡/弹出窗口后,内存使用不会消失)?…可能您也有同样的问题。很抱歉,我不知道为什么,也帮不上忙,但我想我会提到它。@MohamedMansour我完全按照你的建议做了,而且,即使内存增加了一点(大约0.11MB),“比较”视图并没有真正显示任何有意义的内容,显然在280MB附近也没有显示任何内容。这些在哪里?@PAEz我们确实有网络应用通知,但这似乎不是问题:(你在网站上看到了什么吗chrome://memory?@blahdiblah我看到了扩展的pid,它的内存(常驻、共享和私有)…但没有太多其他的:(@juliengestoux一些评论,这里不是一个真正的解决方案:1)你可以得到更多的“低级别”详情见chrome://tcmalloc/ 2) 也许你也想去看看chrome://chrome-urls/ 3) 在开发人员工具关闭的情况下测试应用程序,“有时”当它们关闭时,我会出现内存问题open@JuanMellado出于某种原因chrome://tcmalloc/ 不加载:(@JulienGenestoux Hmmm…我正在使用Chrome 18.0.1025.56(开发频道)1)打开一个选项卡chrome://tcmalloc/ 2) 打开页面的另一个选项卡3)重新加载(F5)第一个选项卡
    --------------------------------------------
    | Resident | Shared  | Private  | Virtual  |
    --------------------------------------------
    | 143,360k | 92,160k | 120,832k | 949,248k |
    --------------------------------------------