我需要存储大量的日期(可能足够大,以至于所使用的堆空间量是一个问题所以请不要过早优化的讲座),我想知道使用某种原始表示是否有意义java.util.Date(或其他一些现有的Date类).我知道我可以做一些分析来尝试一下,但有没有人知道单个Date对象使用的内存有多少字节?
Dun*_*nes 16
我的直觉反应是Date的内存开销非常小.检查源代码似乎该类只包含一个实例字段(一个长的称为毫秒).这意味着日期对象的大小是long的大小加上Object实例的大小 - 也就是说,非常小.
然后我发现这个代码创建了数千个对象来确定对象的大小.它说大小java.util.Date是32个字节.相比之下,只需将日期存储为长(这是它在内部执行的操作) - 长为8个字节,因此为了方便拥有日期对象,您必须支付四倍.
但是,创建对象的开销不是很高.因此,如果您真的担心空间,那么将日期存储为long并在需要时创建Date对象.