Java中String的内存使用情况

时间:2013-11-04 20:24:14

标签: java string memory

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

1 个答案:

答案 0 :(得分:9)

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

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

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

<小时/> * 除非使用-XX:+UseCompressedStrings选项,否则不需要UTF-16的字符串使用UTF-8编码。