Nodejs 分析:父级(切片字符串)

2024-03-25

我分析了我的 Nodejs 应用程序并看到一些奇怪的字符串,它被标记为父级(切片字符串).

我使用 v8-profiler 和 node-inspector。

这是分析器屏幕的照片(抱歉是照片,不是屏幕截图,只是我的系统真的超载并且没有足够的空间来制作屏幕):https://i.stack.imgur.com/7OxSf.jpg https://i.stack.imgur.com/7OxSf.jpg

所以,我的问题是,这是什么父级(切片字符串)字符串?

UPD:经过一番审查后,我明白了,当我在字符串上进行切片时,它存储了父字符串(这是优化吗?)。结果父母的这根弦就留在了记忆里。在我复制这个拼接字符串后,看起来这个父字符串已从内存中清除。我对吗?


是的,这是一个优化。当你有一根长绳子时var longstring = "abc...",然后从中创建一个子字符串(也称为“切片”)var short = longstring.substr(20, 30),那么这些字符实际上并没有在内存中复制;反而short内部仅表示为a slice of |longstring| beginning at index 20 with a length of 30, and longstring叫做short的“父母”。只要您的代码保留对short, longstring无法被垃圾收集器释放。

(根据记录,我们(V8 开发人员)知道这种优化可能会对内存消耗产生负面影响,因为当仅复制仍然需要的部分时,它可能会导致长字符串保持活动状态,从而使用更少的内存。问题是在一般情况下,计算该操作是否有意义(因为仍然需要一小块)或无意义(因为有许多重叠的切片,当它们加起来时,将比它们的共享父代占用更多的内存)是相当昂贵的并且会使垃圾收集器变慢一些。)

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

Nodejs 分析:父级(切片字符串) 的相关文章

随机推荐

  • 如何向随机频道发送消息?

    我正在尝试制作一个机器人 当用户发送特定消息时 它会向随机选择的频道发送随机消息 除了获取所有频道 ID 并手动将它们添加到列表中 然后从该列表中随机选择之外 我不知道如何解决这个问题 但是这种方法存在一些非常大的问题 而且它不起作用 我尝
  • 0除以无穷大一定是0吗?

    根据这个问题 https stackoverflow com questions 1613988 dividing by infinity n inf预计为零n 0 什么时候呢n 0 根据 IEEE 754 0 inf 0总是正确的 从数学
  • 如何在微风中全局应用 MaxExpansionDepth 或应用到整个控制器

    我找到了这个答案 MaxExpansionDepth 与最新的 webapi 和微风 https stackoverflow com questions 19668693 maxexpansiondepth with latest weba
  • 在 Rstudio 中使用 knitr 和在命令行中使用 knit2html 时,HTML 输出有所不同

    我正在尝试使用 knit 从 R markdown 文件生成 html 文档 当我在 R studio 中使用 knit html 按钮时 它工作正常 并且得到了我想要的输出 然而 当我在命令行中使用 knit2html 时 输出 html
  • 在 mono/Linux 下从命名管道读取/写入

    我想从 Linux 下的命名管道 FIFo 队列中读取 写入 我已经尝试了标准类 StreamWriter 和 System IO 中的其他类 但它失败了 因为它正在使用查找 有人曾经使用 Mono 从命名管道中写入 读取过吗 我正在设法阅
  • ES6 导入的执行顺序(HTML 和代码)

    如果我有以下情况 我说得对吗 你不能 100 确定three js将被处决AFTER one js and two js 但是 如果我有 我说得对吗 我可以有信心three js将被处决AFTER one js and two js 这个很
  • 不确定如何使用 CICrop 裁剪图像

    我正在尝试使用 CICrop 裁剪图像 但是当我尝试裁剪时 它崩溃并显示以下错误消息 由于未捕获的异常 NSUnknownKeyException 而终止应用程序 原因 setValue forUndefinedKey 这个类 不符合键的键
  • Entity Framework 4 CTP 4 Code First:如何使用非常规的主键和外键名称

    实体框架 4 中是否有方法 如果重要的话使用 CTP4 和 Code First 来更改用于自动识别主键和外键的约定 我尝试将 EF 与旧数据库一起使用 该旧数据库使用 pk fk 前缀而不是 id 后缀来标记键 此外 地址表具有多个外键
  • 无法在docker上安装jenkins的建议插件

    我已经通过docker启动了jenkins 它已经以管理员模式启动 输入密码后 当我选择安装建议的插件时 大部分安装都会失败 发布当我创建 jenkins 用户并导航到 jenkins 主页时 它显示错误 如下面的屏幕截图所示 通过以下命令
  • 某些实体变量的 Spring Security

    是否可以使用 Spring Security 来安全更新某些实体属性 例如 如果我有一个用户实体 我希望 ROLE USER 能够修改 更新用户的所有属性 除了可由 ROLE ADMIN 更新的活动列之外 我还没有找到Spring Secu
  • 相对布局中的百分比宽度

    我正在研究登录的表单布局Activity在我的 Android 应用程序中 下图是我想要的样子 我能够通过以下方式实现此布局XML 问题是 这有点hackish 我必须对主机 EditText 的宽度进行硬编码 具体来说 我必须指定 and
  • 是否有创建 BPMN 的 Java API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法以编程方式创建BPMN 2 0 http en wikipedia org wiki Business Process Mode
  • Symfony2 minify 无需 java 或 node

    我无法访问共享主机上的 java 或 node 有没有办法缩小服务器端 这样我就可以继续使用 assetic 而不需要这些引擎 Uglify 使用node yui compressor 无论如何已弃用 使用java Thanks 似乎有 2
  • 已安装的 gem 列表?

    我可以调用 Ruby 方法来获取已安装 gem 的列表吗 我想解析的输出gem list 有其他方法可以做到这一点吗 这列出了我安装的所有 gem gem query local http guides rubygems org comma
  • 如何使用 Moment.js 将日期验证为指定格式?

    我无法找到有关如何使用 moment js 验证日期输入以确保其格式为 2017 12 31T23 59 59Z 的现有问题 答案 鉴于我有一个日期字符串 2017 12 31T23 59 59Z 如何验证日期字符串严格采用指定的格式 YY
  • 如何使用sidenav的EventEmitter(onClose)

    我想检查一下我的
  • c# SSL TCPServer 卡在 SsLStream.AuthenticateAsServer()

    故事情节 我想用 C 创建我自己的网络服务器 第一次尝试 进展顺利 我正在使用Visual Studio 到代码申请和火狐浏览器检查如果我做得对的话 并且我成功地制作了一个基本的 TCPServer 当我尝试向其添加 SSL 支持时 遇到了
  • Symfony2 多个应用程序和以 api 为中心的应用程序

    我正在尝试做一个以 Symfony2 为中心的应用程序 并重新使用 Web 前端应用程序的所有捆绑包 该应用程序将分为三个API FrontEnd BackEnd 以便我们可以像Service Bundle一样编码API并在整个应用程序中使
  • 如何使用 Dart 和 Shelf 提供动态和静态页面?

    Using shelf static通过 Dart 提供静态网页是没有问题的 var staticHandler createStaticHandler staticPath defaultDocument home html io ser
  • Nodejs 分析:父级(切片字符串)

    我分析了我的 Nodejs 应用程序并看到一些奇怪的字符串 它被标记为父级 切片字符串 我使用 v8 profiler 和 node inspector 这是分析器屏幕的照片 抱歉是照片 不是屏幕截图 只是我的系统真的超载并且没有足够的空间