首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Nodejs分析:父字符串(切片字符串)

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

Stack Overflow用户
提问于 2015-09-27 14:59:39
回答 1查看 593关注 0票数 6

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

我使用V8-分析器和节点检查器。

下面是分析器屏幕的照片(很抱歉是照片,不是截图,只是我的系统真的超载了,没有足够的空间来制作屏幕):http://i.imgur.com/dkkPbGA.jpg

那么,我的问题是,(切片的字符串)字符串中的这个父字符串是什么?

UPD:经过一些回顾之后,我似乎理解了,当我对字符串进行切片时,它是存储的父字符串(它是优化的吗?)结果,这个父字符串在记忆中。在我复制这个拼接字符串之后,看起来这个父字符串在内存中被清除了。我说的对吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-18 05:32:01

是的,这是一个优化。当您有一个长字符串var longstring = "abc..."时,您将创建一个子字符串(a.k.a )。(“var short = longstring.substr(20, 30)”)之后,这些字符实际上不会在内存中被复制;相反,short在内部被表示为a slice of |longstring| beginning at index 20 with a length of 30,而longstring被称为short的“父级”。只要代码保持对short的引用,垃圾收集器就不能释放longstring

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32813720

复制
相关文章
Firebase 如何创建登录 Token
Firebase 的 token 可以使用 firebase 命令行工具来进行创建。
HoneyMoose
2021/04/02
2.5K0
Firebase 如何创建登录 Token
MySQL创建计算字段及基本函数
select concat(vend_name,'(',vend_country,')') from vendors order by vend_name;
小末快跑
2019/07/03
1.9K0
第十章:创建计算字段
本文介绍了如何创建计算字段,包括拼接字段、使用别名、执行算数计算等。
用户1134788
2018/01/05
6240
如何在Python中创建AGE计算器Web App PyWebIO?
为了计算此 Web 应用程序的日期,我们将默认使用 Python 附带的日期时间包。该软件需要用户的姓名和出生日期,然后使用当前日期计算他们的年龄(以年为单位)。输出将使用 PyWebIO 的输出例程显示在网页上。
很酷的站长
2023/08/11
2940
如何在Python中创建AGE计算器Web App PyWebIO?
在Oracle中创建自动增长字段
Oracle在创建表时和其他的数据库有点不一样,MySQL中可以使用“auto_increment”即可。但是Oracle有点麻烦,需要使用序列和触发器达到目的。
星哥玩云
2022/08/17
3.1K0
在Oracle中创建自动增长字段
firebase怎么用_firebase是什么
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168361.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
4.3K0
firebase怎么用_firebase是什么
第7课 创建计算字段拼接字段执行简单的算术运算
什么是计算字段? 就是直接从数据库中检索出转换,计算或者格式化的数据,而不是检索出数据之后,再在客户端应用程序中重新格式化。
desperate633
2018/08/22
6780
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.8K0
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.5K0
如何在Mac中创建MiniKube
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.2K0
如何在Dynamo中创建UI
07-08 创建计算字段使用函数处理数据第7章 创建计算字段第8章 使用函数处理数据
上述例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。
用户1250179
2018/08/02
3.8K0
07-08 创建计算字段使用函数处理数据第7章 创建计算字段第8章 使用函数处理数据
如何在 WordPress 中创建联系表格?
假设我们有一个 WordPress 网站,并且我们想要添加一个功能,让他们可以联系他们所拥有的查询。我们可以通过使用网站上的 WordPress 插件添加联系表格来做到这一点。因此,这将为你的访问者提供一种与你联系的方式,当他们需要帮助或有什么要分享的时候。
海拥
2022/12/19
3K0
如何在 WordPress 中创建联系表格?
如何在 WordPress 中创建登录页面
登陆页面: 登陆页面是为特定受众制定的具有特定目标的目标页面,可以描述为“一页一目的”。登陆页面必须有一个“号召性用语”,并牢记特定目标。成功的着陆页是具有更高转化率、更高参与度和更高质量潜在客户的页面。
海拥
2022/10/04
3K0
如何在 WordPress 中创建登录页面
如何在git中创建新分支
介绍 Git 是一个开源版本控制系统,用于在软件开发过程中跟踪更改。它的相互独立的分支模型使其脱颖而出。分支可以基于以前版本的软件来保持当前进度的完整性,同时处理错误修复或新功能。 在本地创建 Git 存储库 要创建新的 Git 存储库,请在终端中输入以下命令: mkdir rumenz cd rumenz git init 这将在 rumenz 目录中创建并初始化一个新的 Git 存储库。创建一个新的降价文件并添加一行文本: echo This is a line of text > rumenz.md
入门笔记
2022/06/02
3K0
如何在 SwiftUI 中创建条形图
条形图以矩形条的形式呈现数据的类别,其宽度和高度与它们表示的值成比例。本文将展示如何创建一个垂直条形图,其中矩形的高度将代表每个类别的值。
Swift社区
2022/12/12
5.4K0
如何在 SwiftUI 中创建条形图
如何在R中创建日历热图
首先,我们运行Paul Bleicher创建的calendarHeat函数以显示日历热图。 其次,我们创建一些随机的时间序列数据。 最后,我们在两个调色板中绘制时间序列。
用户1359560
2020/04/01
4.6K0
如何在R中创建日历热图
点击加载更多

相似问题

如何在Tableau中创建计算字段?

12

如何在mysql中创建计算字段?

23

如何在firebase中创建必需的字段验证

11

创建输入字段,如Google

12

如何在opentaps/OFBiz中创建计算字段?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档