【发布时间】:2013-03-22 09:38:11
【问题描述】:
在我的一个课程中,我有一个Character 类型的字段。我更喜欢它而不是char,因为有时该字段“没有价值”,而null 对我来说是表示这种(缺乏)信息的最干净的方式。
但是我想知道这种方法的内存占用。我正在处理数十万个对象,这两个选项之间可以忽略不计的差异现在可能值得进行一些调查。
我的第一个赌注是 char 占用两个字节,而 Character 是一个对象,因此它需要更多才能支持其生命周期。但我知道 Integer、Character 等盒装原语不是普通的类(想想装箱和拆箱),所以我想知道 JVM 是否可以在后台进行某种优化。
此外,Characters 的垃圾是否像其他东西一样被收集或具有不同的生命周期?它们是从共享存储库中汇集的吗?是这个标准还是 JVM 实现依赖?
我无法在 Internet 上找到有关此问题的任何明确信息。你能告诉我一些信息吗?
【问题讨论】:
-
\0可以用作 no-value 字符 -
当然,我知道这一点。 :) 考虑到应用程序域,我什至可以使用 ~、# 或汉字,但这不是重点
-
原语总是比对象更快,而且内存更少,因为我们都知道我们更喜欢字符串上的字符数组。(作为 java 中的数组本身是一个对象,但它是一个有争议的问题:D)
标签: java performance memory