ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM?

2023-12-10

问题非常简单:ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM(以字节为单位)?

我会猜测两个字节,因为标准说它们存储为 16 位无符号整数?

这是否意味着每个字符始终是两个字节?


是的,我相信情况确实如此。这些字符可能存储为宽字符串或 UCS2 字符串。 它们可能是 UTF-16,在这种情况下,对于 BMP(基本多语言平面)之外的字符,它们每个字符占用两个单词(16 位整数),但我相信这些字符并未得到完全支持。读这个关于问题的博客文章在 ECMA 的 UTF16 实现中。

大多数现代语言都用两个字节字符存储字符串。这样您就可以获得对所有口语的全面支持。它会花费一点额外的内存,但这对于任何具有多千兆内存的现代计算机来说都是微不足道的。以更紧凑的 UTF8 存储字符串将导致处理更复杂且更慢。因此,UTF8 主要仅用于传输。 ASCII 仅支持拉丁字母,不带变音符号。 ANSI 仍然受到限制,需要指定的代码页才能有意义。

第 4.13.16 条ECMA-262明确将“字符串值”定义为“原始值,它是零个或多个 16 位无符号整数的有限有序序列”。它suggests程序使用这些 16 位值作为 UTF-16 文本,但简单地使用字符串来存储任何不可变的无符号 Short 数组是合法的。

请注意,字符大小并不是构成字符串大小的唯一因素。我不知道确切的实现(并且可能有所不同),但字符串往往有一个 0x00 终止符以使它们与 PChar 兼容。它们可能有一些标头,其中包含字符串大小,可能还有一些引用计数甚至编码信息。包含一个字符的字符串很容易消耗 10 个字节或更多(是的,那就是 80 位)。

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

ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM? 的相关文章

  • 解构为两个单独的变量

    有没有一种快速的方法来解构一个对象 以便将其存储到两个不同的组中 例如 const obj a 1 b 2 c 3 d 4 e 5 const a b obj store the rest of the properties that we
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • 如何使单词中的每个字母在悬停时发生变化

    假设我的网站上某个段落中有一个单词 IamGreat 我希望它在悬停时更改为 Good4you 但是 我不想更改整个单词 而是希望每个字母单独更改 因此 如果我将鼠标悬停在字母 I 上 它将变成字母 G 字母 r 将变成数字 4 等 这两个
  • Apache 服务器上的服务器端 Javascript

    我们打算使用Apache https httpd apache org 用于 Web 开发的服务器 对于服务器端脚本 我们希望使用服务器端 javascript 要使服务器端 javascript 在 Apache 服务器上工作需要什么 S
  • Vue 多个组件位于一个包/文件中

    假设我想创建一个 UI 包 如何将多个组件放入一个 JS 文件中 通常我会将不同的组件放在不同的文件中 import ButtonText from ButtonText vue import ButtonIcon from ButtonI
  • Javascript/Node 中从不执行用户代码的隐藏线程:是否可能,如果可能,是否会导致竞争条件的神秘可能性?

    根据评论 答案 请参阅问题底部的更新 这个问题实际上是关于可能性的hidden不执行回调的线程 我有一个关于潜在的神秘场景的问题 涉及节点请求模块 https www npmjs com package request其中 A 构建完整的
  • 是否有 IE 渲染完成事件?

    在尝试确定页面加载时间为 20 秒的原因时 我发现 IE8 中有一些奇怪的行为 场景是这样的 我进行 ajax 调用 它返回并且回调看起来像这样 StoreDetailsContainer html tableHtml var StoreD
  • Javascript 清理:插入可能的 XSS html 字符串的最安全方法

    目前我正在将此方法与 jQuery 解决方案结合使用 以清除字符串中可能的 XSS 攻击 sanitize function str return htmlentities str ENT QUOTES return div div tex
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 如何使网站适应用户的屏幕分辨率?

    我正在使用 1024x768 屏幕分辨率来设计我的网站 当您从屏幕分辨率较小 较大的计算机上的浏览器中查看网站时 网站开始变形 无论用户的屏幕分辨率是什么 如何使网站适应用户的屏幕分辨率 我相信通过 JavaScript 或 CSS 是可能
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • 使用带有箭头的 MaterializeCSS 轮播 - 如何使用普通 javascript 进行初始化

    我正在尝试使用 MaterializeCSS 创建带有箭头的轮播 我正在尝试使用这个代码笔 https codepen io Paco Cervantes pen ZLxKpj取得有限的成功 我想使用普通的 javascript 而不是 j
  • IE7 问题 - 当禁用文件下载自动提示时无法下载流式文件

    我的应用程序是基于 J2EE JSP Servlet 的 当我尝试从 JSP 打开新窗口 弹出窗口 并调用 Servlet 操作 例如 Streamer do 以在该弹出窗口内传输 PDF 文件时 我遇到了问题 问题 当 IE 7 gt 工
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • (A == B == C) 比较在 JavaScript 中如何工作?

    我预计以下比较会给出错误 var A B 0 if A B 0 console log true else console log false 但奇怪的是它又回来了false 更奇怪的是 console log A B 1 returns
  • 如何在不刷新页面的情况下更新页面 html 和 url

    我想知道是否有人可以指出我学习如何在不刷新页面的情况下更新页面 html 和 url 的方向 是否有任何现有的 javascript 库可以处理这个问题 或者有一本涵盖此类事情的好书 这是使用该效果的示例网站 http onedesignc
  • 使用 Scala 在 Apache Spark 中拆分字符串

    我有一个数据集 其中包含以下格式的行 制表符分隔 Title lt t gt Text 现在对于每个单词Text 我想创建一个 Word Title 一对 例如 ABC Hello World gives me Hello ABC Worl
  • 如何在jsp页面中包含javascript

    我是 J2EE 和 Web 开发的新手 这是我的问题 我想在网页中包含 angular js 这是有效的版本 但我也想要一些本地的 javascript 文件 并且希望我想在本地目录中导入 angularjs

随机推荐

  • 如何让这个 jQuery 动画代码永远循环?

    我正在尝试在滑块上创建文本动画循环 我尝试循环但它不起作用 你能告诉我如何永远循环这个脚本吗 谢谢
  • RouteCollection”不包含“MapMvcAttributeRoutes”的定义

    我只需要降级我的ASP NET 4 5 2申请到ASP NET 4 0 当然 这会带来问题 比如引用安装不正确 我已经解决了其中一些问题 但我无法解决错误 CS106 RouteCollection 不包含定义 MapMvcAttribut
  • 美丽汤 find() 返回 None?

    我正在尝试解析 HTMLwebsite 我想从所有这些中获取文本span元素与class post subject 例子 span class post subject Set of 20 moving boxes 20009 or 200
  • 菜单背景改变滚动颜色

    我想做的是 当用户到达网站的下一部分时 将菜单的背景从透明淡入浅灰色 我到处搜索脚本 并在这里尝试了多个脚本 但似乎根本不起作用 任何帮助将不胜感激 Thanks HTML
  • std:: 引用对

    拥有一个有效吗std pair参考文献 特别是 赋值运算符是否存在问题 根据这个链接 好像没有对operator 进行特殊处理 所以默认的赋值运算符将无法生成 我想要一个pair
  • 指数曲线拟合matlab

    我有以下等式 我想使用 MATLAB 对上述方程进行指数曲线拟合 其中y f u a y是我的输出 u a 是我的输入 我想求系数A B对于一组提供的数据 我知道如何通过定义状态来对简单多项式执行此操作 举个例子 如果states ones
  • 如何保存tf.data.Dataset对象?

    如上 我尝试对其进行酸洗 但出现以下错误 Maybe arr self cpu nograd numpy pylint 禁用 受保护的访问 运行时错误 Tensorflow 类型 21 无法转换为 numpy dtype tf data D
  • 在 Fortran 中调用子例程(分段错误)

    以下代码在 Linux 系统上使用 pgf90 编译时出现分段错误 而在 Windows 上使用 Intel Visual FORTRAN 时运行成功 program main implicit none integer a 3 b 3 c
  • 如何计算文档中单词与特定术语的接近度

    我正在尝试找出一种方法来计算文档中特定术语的单词接近度以及平均接近度 按单词 我知道 SO 上也有类似的问题 但没有任何东西可以给我我需要的答案 甚至没有给我指出一些有用的地方 假设我有以下文本 song lt Far over the m
  • 检测精灵之间碰撞的最佳方法?

    检测 2D 游戏精灵中的碰撞的最佳方法是什么 我目前从事 allegro 和 G 工作 有多种方法可以检测碰撞检测 根据您使用的是 2d 还是 3d 环境 您使用的方法将略有不同 还要记住 在建立碰撞检测系统时 要考虑到您可能想要在游戏中实
  • 将外部配件连接到 3.5 毫米耳机插孔时无法收到通知

    我已经尝试让它发挥作用有一段时间了 我已经完成了文档中所说的所有操作 但仍然一无所获 这是我的应用程序委托中注册本地通知的代码 void registerForLocalNotifications NSNotificationCenter
  • sqrt() 函数链接错误

    以下代码在 Linux 上引发未定义符号错误 cat rms c sqrt example include
  • 请求所有文件时如何避免读取超时? (谷歌驱动器API)

    我有一个驱动器应用程序 它请求所有未删除的文件 但有时会抛出读取超时的IO异常 有办法避免这种情况吗 这是我得到的错误 发生错误 java net SocketTimeoutException 读取超时 也许我的指数退避实施错误 这是我用来
  • 将控制台输出绑定到 RichEdit

    这是非常简单的问题 我有一个带有大量 Console Writeline 代码的 c dll 并且希望能够使用此 dll 在表单应用程序中查看该输出 是否有一种相对简单的方法将控制台输出绑定到 RichEdit 或其他合适的控件 或者 我可
  • 使用 Spring Cloud Data Flow 2.0.1 时出现 Oracle 11.2 Unsupported 错误

    我正在尝试设置 SCDF 2 x Spring Cloud Data Flow 服务器 以注册 Spring Boot 应用程序 例如任务类型 以利用开箱即用的管理和其他功能 在设置 SCDF 2 x 时 尝试连接到新的 dataflow
  • 使用.NET框架读取串口的正确方法是什么?

    我在这里阅读了很多有关如何使用 NET SerialPort 类从串行端口读取数据的问题 但没有一个推荐的方法对我来说完全有效 这是我现在使用的代码 SerialPort port new SerialPort COM1 port Data
  • 如何在PHP中将英语日期格式转换为德语日期格式

    嗨 我有这样的日期格式 英文格式 15 July 2011 我想将其转换为德语格式 如下所示 15 Juli 2011 如何将日期格式从一种语言转换为另一种语言格式 我的代码是 date 15 July 2011 newLocale set
  • 在 Python TkInter 中更新标签文本

    有没有可能的方法来创建使用字符串和变量作为文本的 TkInter 标签 例如 name bob Label root text hello my name is name 但不是仅在创建标签时将标签文本设置为上述内容 而是在 名称 更改时更
  • 如何在UIWebView中使用Apple(应用内购买)?

    有没有什么方法可以从应用程序内的 UIWebView 使用 Apple In App 购买 因为我想使用网络视图加载外部网站并在应用程序购买中使用作为应用程序内的付款方式 您可以从 UIWebView 调用 Objective C 方法 您
  • ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM?

    问题非常简单 ECMAScript JavaScript 字符串中的每个字符消耗多少 RAM 以字节为单位 我会猜测两个字节 因为标准说它们存储为 16 位无符号整数 这是否意味着每个字符始终是两个字节 是的 我相信情况确实如此 这些字符可