当前位置: 首页 > 知识库问答 >
问题:

一个字符串在Java8中使用多少内存?

宗政子辰
2023-03-14

我最近读了很多关于字符串内存分配的文章,但找不到任何细节,如果在Java8中情况相同的话。

在Java8中,像“Alexandru Tanasescu”这样的字符串会使用多少内存空间?我使用64位版本。

共有1个答案

龚迪
2023-03-14

最小字符串内存使用量:

(bytes) = 8 * (int) ((((no chars) * 2) + 45) / 8)

所以

80 = 8 * (int) ((((19) * 2) + 45) / 8)

了解字符串内存使用情况(源)

    null
  • 包含实际字符的char数组(因此是一个单独的对象);
  • <罢工> 字符串开始的数组中的整数偏移量;
  • <罢工> 弦的长度;
  • 另一个int用于缓存的哈希代码计算。

因此,在Java8中,计算字符串内存的方式保持不变,但是由于缺少偏移量长度,您必须少减去8个字节。

 类似资料:
  • 问题内容: 说我有这个表情 我知道,串池“允许运行时以节省内存在一个池保留不变的字符串” 字符串池 字符串池中将创建多少个字符串? 我最初的猜测是5 -,,,,,因为操作顺序的级联(左到右?),或者是它只是最后的结果,“TomBradyGoat”,存储在字符串池? 问题答案: 在运行时,这段代码将转换为单个对象。编译器将在编译时进行串联,并在常量池中添加一个值。

  • 我想通过分隔符将字符串分成两个字符串: 这意味着第一个字符串将包含之前的字符,第二个字符串将包括

  • 问题内容: 从服务器以UTF-8发送时,我有一个大约500K的JavaScript字符串。如何用JavaScript判断其大小? 我知道JavaScript使用UCS-2,因此每个字符2个字节。但是,这取决于JavaScript实现吗?还是页面编码或内容类型? 问题答案: 值不依赖于实现,根据ECMA-262第三版规范,每个字符代表_UTF-16文本_ 的 单个16位单元 : 4.3.16字符串值

  • 问题内容: 我的朋友给我发了一个问题,他在一次关于字符串对象的Java认证模拟考试中看到了一个问题: 调用此方法时将创建多少个字符串对象?考试给出的正确答案是3。但是我认为是5。 “嗨” “ 5” “ HI5” “H” “H” 我错了吗? 问题答案: String makeStrings() { String s = “HI”; //String literal s = s + “5”; //co

  • 问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(