如何获取浏览器内存中的 JavaScript 对象大小和计数

2024-03-06

我知道你们大多数人都会向我指出chrome profiler heap snapshot,但是在空页面上(没有js没有css,只有html>body)它显示8mb堆大小和12到30000个对象取决于他的心情,所以对于这个任务来说它是完全无用的工具,我认为这个堆分析器有它自己的尽管其他 Chrome 开发工具都很棒,但对它所显示的数据而不是事实的看法是卑鄙的。

基本上我的骨干 1page 应用程序在内存中不断增长,即使我正在做所有可能的垃圾收集舞蹈,JSON.stringify(Obj).length throws action not secure在大多数物体上,我如何能够比反复试验更容易地追踪那些僵尸。


你不喜欢 Chrome 开发者工具,但据我所知,它们是你拥有的最好的工具。你只需要明智地使用它们。

假设您想测试应用程序中的某些操作是否泄漏内存。它可能是视图的渲染,或者获取一些新数据。我们称其为Action.

为了找出保留了多少内存,以及保留了多少内存,首先需要获得可测量的基线,并消除噪声。您需要三个步骤来实现这些目标。

  1. Warm-up

    启动您的应用程序(导航到您的网站)。履行Action。拍摄堆快照。该快照将被丢弃,但它会运行 GC 并为您提供一个干净的状态。预热还确保您的可测量数据不会出现任何模糊:脚本评估、初始加载资源异步等。

  2. Baseline

    Perform Action三次。拍摄堆快照。这是我们比较内存保留和保留的基线。我们做的是Action三次以获得合理的平均值,以防执行路径中存在一些小的变化。确保尝试重复Action每次都以完全相同的方式。

  3. 测量

    Perform Action三次。拍摄堆快照。

现在您将拥有三个快照。第一个将被丢弃,但对我们来说有趣的是Summary for 在快照 2 和 3 之间分配的对象,以及三角洲比较从快照 3 到快照 2。您可以从“配置文件”视图的底部/状态栏找到这些视图。

您在之间看到的数据Baseline and 测量shapshots 是真实的内存配置文件Action。之后,您只需要知道如何正确解释数据即可。为此我推荐Google 关于分析器的文档 https://developers.google.com/chrome-developer-tools/docs/heap-profiling.

我认为目前还没有更好的工具或方法。如果有的话,我很想听听。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取浏览器内存中的 JavaScript 对象大小和计数 的相关文章

  • 如何从外部域设置 iframe 内部的样式?

    我有一个网站 其中嵌入了来自 3 个不同域的 3 个 iframe 每个 iframe 都位于单独的页面上 将样式表应用于所有 3 个 iframe 的最佳方法是什么 谢谢你 这可以在某些网站上完成 但由于 同源政策 而并非全部 Twitt
  • 组织 jQuery/JavaScript 代码的最佳方式 (2013) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 问题 这个答案之前已经回答过 但已经
  • jQuery 输入焦点不起作用

    我正在尝试在表中创建数据的内联编辑 为此 我将单元格中的文本更改为输入 document ready function td edit on click function this html
  • req.body 为空 Express js

    我花了几个小时试图找出为什么 req body 是空的 我在 stackoverflow 上到处查看并尝试了所有方法 但没有运气 Express js POST req body 空 https stackoverflow com ques
  • 处理重叠 SVG 图层中的鼠标事件

    我正在使用 d3 js 构建地图可视化 我正在为美国各州和县绘制填充多边形 县的 SVG 图层位于州图层下方 状态已填充 但填充不透明度设置为 0 我认为 需要填充来捕获点击事件 我想捕获州级的点击事件 但我想捕获县级的鼠标悬停事件 但是
  • 如何从 JQuery - IonRangeSlider 获取值?

    我怎样才能得到低值和高值ion rangeSlider http ionden com a plugins ion rangeSlider en html通过单击按钮来组件 这是我的 jQuery 代码
  • HTML 5 视频:使用 javascript 播放多个“剪辑”

    我在 HTML 视频和 JavaScript 方面遇到问题 因此编写了一些简单的代码来演示 有一个视频包含三个 剪辑 全长五秒 显然 在现实世界中 它们要长得多 一个在 25 30 秒 一个在 55 60 秒 最后一个在 85 90 秒 我
  • 将图像嵌入 Chrome 扩展程序

    我正在构建一个 Google Chrome 扩展 它将 HTML 注入到真实的网页中 注入还包含图像 现在我想知道如何在扩展中引用图像 到目前为止 我只能在服务器上使用它们来引用它们http example com myimage png
  • 避免 IE 中因背景图像而出现“混合内容”警告的具体规则是什么?

    这与SSL 和 CSS 背景图像导致的混合内容 https stackoverflow com questions 1548551 ssl and mixed content due to css background images但这个问
  • 单击

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道如何用 jquery 做到这一点 但我被 React 困住了 每当用户点击 div 时 我如何聚焦输入字段 你需要有一个onCl
  • 在 Angularjs 中格式化输入值

    我正在尝试编写一个指令 自动格式化数字
  • 反应:无效的挂钩调用。钩子只能在函数组件体内调用

    我花了两天时间试图了解错误在哪里 知道吗 App js import React useState useEffect from react import Menu from components Menu function App ret
  • 通过 javascript 从 获取点击坐标

    Example
  • 如何使我的网站兼容移动设备和平板电脑? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想让我现有的网站在手机 平板电脑上查看时自动调整 甚至在您在桌面上调整屏幕时自动调整 如果失败的话 如果太难 你有什么建议 我基本上
  • 找出Linux上一个进程使用了​​多少内存页

    我需要找出进程分配了多少内存页 每个页面是 4096 进程内存使用情况我在查找正确值时遇到一些问题 当我查看 gome system monitor 时 内存映射下有几个值可供选择 Thanks 这样做的目的是将内存使用量除以页数并验证页大
  • 在 JavaScript 中将长数字转换为缩写字符串,并有特殊的简短要求

    在 JavaScript 中 如何编写一个函数来转换给定的 编辑 正整数 数字 低于 1000 亿 转换为 3 个字母的缩写 其中 0 9 和 a z A Z 算作一个字母 但点 因为它在许多比例字体中很小 不会 并且会被忽略信函限制条款
  • 利用源映射的堆栈跟踪

    概述 浏览器控制台中的堆栈跟踪输出与调用 Error stack 时返回的跟踪不同 控制台堆栈跟踪似乎考虑了源映射 而 Error stack 堆栈跟踪则没有 控制台输出这是输出到控制台的默认堆栈跟踪 Uncaught TypeError
  • 如何以编程方式将 CSS 定义应用到整个页面?

    我确信该信息已经存在 但我找不到它 对不起 我想使用 JavaScript 创建 CSS 规则 并将它们应用到整个页面 就像它们位于文档头部的样式元素中一样 我不想通过生成 CSS 文本来实现 我想将规则保留为可以更改的实体 JavaScr
  • 检查用户是否登录 Facebook

    我正在尝试使用 javascript 检查用户是否登录 Facebook 刚刚登录或未登录 与我的应用程序无关 我尝试在 FB init 之后使用以下代码 FB getLoginStatus function response alert
  • 如何将react-native与php一起使用并获取返回数据始终为空

    我的回报始终为空 我似乎无法让它发挥作用 我如何将react native与php一起使用并获取json 任何人都可以帮忙吗 PHP myArray array myArray lat POST lat myArray lng POST l

随机推荐

  • PHP使用时区函数的时差?

    我试图找到一种方法来使用 PHP 中的时区函数显示两个位置之间的时间差异 http php net manual en timezones php http php net manual en timezones php 假设我从上面的链接
  • Excel VBA - 运行时错误“9”,下标超出范围

    我真的很感谢我能得到的任何帮助 我试图循环遍历一列 查找重复的名称 然后从同一行获取该名称和其他几个数据 并将它们放入一个我想使用另一个函数的二维数组中 但它不起作用 我真的需要你的帮助来弄清楚为什么我不能在不保留数据的情况下重新调整这个数
  • Web 音频 API - 如何将音频缓冲区保存到包含所有更改的文件?

    我对音频缓冲区 例如增益和平移 进行了更改 并将它们连接到音频上下文 现在我想将所有已实施的更改保存到一个文件中 按原样保存缓冲区将为我提供未经更改的原始音频 有任何方法或程序可以做到这一点吗 方法是使用MediaRecorder保存修改后
  • java中继承私有字段

    如果子类不能从超类继承私有成员 但它从超类继承公共方法 这些方法可以访问未继承的私有成员 如此处所述 http docs oracle com javase tutorial java IandI subclasses html http
  • 无法找到 Microsoft 认知服务的订阅密钥

    I need to work on Microsoft Cognitive Services Face API I downloaded the code from https github com Microsoft Cognitive
  • CLARION 日期转换 C# + 日期加/减

    这是针对 ISV 数据库的 所以我对此进行了逆向工程并且无法更改 我如何在 C 中执行以下日期到 int visa versa 转换 所以说日期是 5 17 2012 它被转换为 int 77207 在数据库中 起初我以为这是儒略日期 但事
  • => 和 () => 在 Scala 中意味着什么[重复]

    这个问题在这里已经有答案了 我是 Scala 的新手 我真的很喜欢它 但有时它会让我感到惊讶 例如 clickedCallbacks List gt Unit 谁能告诉我什么 gt and gt 在斯卡拉中是什么意思 gt 是用于创建函数实
  • C# 和 SQL Server 中 int 到 guid 的不同转换

    在 C 和 SQL Server 中将 int 转换为 guid 时 我得到不同的值 在C 中我使用这个方法 public static Guid Int2Guid int value byte bytes new byte 16 BitC
  • Ant 无法删除 Windows 上的某些文件

    我有一个 ant 构建 可以创建目录 调用 javac 和所有常规内容 我遇到的问题是 当我尝试执行清理 删除生成的所有内容 时 删除任务报告无法删除某些文件 当我尝试手动删除它们时 效果很好 这些文件显然没有被任何其他进程打开 但 ant
  • 使用 CALayer 委托

    我有一个 UIView 其图层将有子图层 我想为每个子图层分配委托 因此委托方法可以告诉图层要绘制什么 我的问题是 作为 CALayer 的代表我应该提供什么 文档说不要使用图层所在的 UIView 因为这是为视图的主 CALayer 保留
  • 自定义控件中的选择器

    我正在建立一些表格 使用TableView 并注意到我对单元格的样式设置相同 我决定将这段重复的代码重构为一个公共控件 I am struggling to get the binding to work on the picker cor
  • 如何暂停在终端中运行的Python脚本

    我有一个网络爬行 python 脚本在终端中运行了几个小时 它不断填充我的数据库 它有几个嵌套的 for 循环 由于某些原因 我需要重新启动计算机并从我离开的位置继续执行脚本 是否可以保留指针状态并恢复之前在终端中运行的脚本 我正在寻找一种
  • ShellExecute 对于本地 html 或文件 URL 失败

    我们公司正在将我们的帮助系统迁移到 Flare 下的 HTML5 格式 我们还在 URI 命令行上使用 Flare CSHID 添加了对帮助系统的基于主题的访问 以便直接访问主题 例如index html CSHID GettingStar
  • MVC中如何定义img src路径

    我的 index cshtml 带有图像 里面还有一个Images文件夹myApp Images folder 如果我访问 http localhost myApp 或 http localhost myApp home 工作正常 但如果我
  • gcc 是否会根据条件优化我的循环?

    我有以下循环 condition will be set here to true or false for int i 0 i lt LARGE NUMBER i if condition do foo else do bar 假设 无条
  • 如何设计一个带有“注释”字段的类?

    想象一下 我们有某种包含数百种消息类型的协议 我们希望通过 C 类对每种消息类型进行建模 由于每个类应该能够自动处理每个字段 一个自然的解决方案是只拥有一个std tuple具有所有必需的类型 std tuple
  • “平面文件源”(471) 预执行阶段失败并返回错误代码 0xC020200E。我该如何阻止这种情况发生?

    你好 我想知道你是否可以帮忙 每个星期我都会收到这个错误 平面文件源 471 预执行阶段失败并返回错误代码 0xC020200E 无法打开数据文件 G Data 待处理 RO Orders csv 我知道 如果我进入平面文件连接管理器编辑器
  • 检查 MySQL 中的日期范围冲突

    我正在写一个酒店预订系统 经过大量研究 包括堆栈溢出 我编写了这个 sql 来查找空闲房间 SELECT FROM room WHERE room id NOT IN SELECT room id FROM bookings WHERE c
  • 从快捷键运行宏时不出现输入框

    我有一个简单的小 Excel 宏 用于打开模板 询问文件名并保存文件 它从 Microsoft VBA 窗口运行没有问题 但当从 Excel 使用快捷键时 它会打开文件 但不显示输入框 Sub NewCommentSheet NewComm
  • 如何获取浏览器内存中的 JavaScript 对象大小和计数

    我知道你们大多数人都会向我指出chrome profiler heap snapshot 但是在空页面上 没有js没有css 只有html gt body 它显示8mb堆大小和12到30000个对象取决于他的心情 所以对于这个任务来说它是完