简短回答:不,绝对不是。众所周知,JVM字符串非常重;该对象不仅包含指向字符数组的指针,还包含其长度。内部存储使用UTF-16代码点,所以你的问题可能是“它需要6个字节吗?“:-) JVM的技术参考将给予您字符串对象的确切大小。您还可以找到一些有趣的博客文章such as this one和技术文章。 关于字符串对象的确切大小问题还有很多。我们可以进入到对象指针的压缩,字符串实习等。还有一个事实是,由于字符串是不可变的,我们经常共享字符串内存,例如当您调用substring时就会发生这种情况。 然而,永远正确的是:超过3个字节。
3条答案
按热度按时间tgabmvqs1#
它需要超过3个字节,请继续阅读this page中的完整解释
由于我们将在下面探讨的原因,Java String(在Hotspot Java 6 VM中)的最小内存使用量通常如下:
或者,换句话说:
来自同一网站的This page还详细介绍了使用与
String
不同的类来保存内存的方法kx1ctssn2#
简短回答:不,绝对不是。众所周知,JVM字符串非常重;该对象不仅包含指向字符数组的指针,还包含其长度。内部存储使用UTF-16代码点,所以你的问题可能是“它需要6个字节吗?“:-)
JVM的技术参考将给予您字符串对象的确切大小。您还可以找到一些有趣的博客文章such as this one和技术文章。
关于字符串对象的确切大小问题还有很多。我们可以进入到对象指针的压缩,字符串实习等。还有一个事实是,由于字符串是不可变的,我们经常共享字符串内存,例如当您调用
substring
时就会发生这种情况。然而,永远正确的是:超过3个字节。
u3r8eeie3#
最小字符串内存使用量(字节)= 8 (int)(num of chars) 2)+ 45)/ 8)