Java中对象和字符串的大小

hee*_*eeh -1 java

我试图找出有效的数据类型.我知道int是4个字节,char是一个字节.

  1. 一个包含五个整数的对象(4*5 = 20个字节)
  2. 一个有十个字符的String对象.(假设它有10个字符10*1 = 10个字节)

我对吗?你觉得哪一个更好?

Chr*_*bin 9

客观答案首先:

  • 这里记录原始数据类型
  • 字符串更复杂,因为JVM可以实习它们.在这里看一个很好的解释

不那么客观的答案:选择能够为您的应用程序提供最佳设计的数据结构.

如果您的应用程序中有特定的约束,请发布有关您需要处理的数据和您拥有的约束的更多详细信息.


ars*_*jii 7

A String不仅仅是一个字符数组,它是一个独立的对象,并且具有除其后备之外的字段char[].例如,String有三个int领域:offset,counthash.因此,空字符串通常是16个字节(因为我们还需要考虑该char[]字段)加上正常的8个字节的对象开销.另外请注意,一个char[]本身的目标,并有int现场length和相关对象的开销.一旦你已经采取了到所有这些因素,那么你可以添加每个字符两个(没有之一!)字节.

所以,对于一个10个字符的字符串:

  • 3个int字段:12个字节
  • char[]字段:8个字节
    • int字段:4个字节
    • 对象开销:8个字节
  • 10个字符:20个字节
  • 对象开销:8个字节

这大约是60个字节.我说"约",因为其中一些依赖于VM.