gpt4 book ai didi

java - Java中String的内存使用情况

转载 作者:IT王子 更新时间:2023-10-28 23:34:20 26 4
gpt4 key购买 nike

我在 Java 中有一个包含字符串的对象。我很好奇 String 的内存使用是如何工作的。我正在尝试优化我的程序的内存使用,应用程序将有大约 10000 个这样的对象。对于诸如“Hello World”之类的字符串,内存使用量是多少?

最佳答案

Java 每个字符使用两个字节 *,因此您需要将字符数乘以 2 以获得粗略的近似值。除了“有效负载”的存储之外,您还需要考虑分配给字符串引用的空间,这通常等于目标架构上指针的大小,字符串长度的空间,这是一个int,以及缓存的哈希码的空间,这是另一个int

由于 "Hello World" 有 11 个字符长,我估计它的大小在具有 32 位指针的计算机上为 2*11+4+4+4=34 字节,或 2*在具有 64 位指针的计算机上为 11+8+4+4=38 字节。

注意:这个估计没有考虑字符串常量的影响。当字符串为 interned 时,对实习字符串的所有引用共享相同的有效负载,因此每个附加的实习字符串实例的额外内存是引用的大小(即目标架构上的指针大小)。


* 除非使用了 -XX:+UseCompressedStrings 选项,在这种情况下不需要 UTF-16 的字符串使用 UTF-8 编码。

关于java - Java中String的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19776463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com