java.util.Date 对象使用多少字节的内存?

2022-09-02 09:34:06

我需要存储大量的日期(可能足够大,以至于使用的堆空间量是一个问题,所以请不要讲过早优化),我想知道使用某种原始表示而不是java.util.Date(或其他一些现有的Date类)是否有意义。我知道我可以做一些分析来尝试一下,但是有没有人知道单个Date对象使用了多少字节的内存?


答案 1

我的直觉反应是,Date的内存开销会非常小。检查源代码,该类似乎只包含一个实例字段(长称为毫秒)。这意味着日期对象的大小是 long 的大小加上 Object 实例的大小 -- 也就是说,非常小。

然后,我发现了这个代码,它创建了数千个对象来确定对象的大小。它说 的大小为 32 个字节。相比之下,只需将日期存储为长(这是它在内部执行的操作) - 长是8字节,因此您必须支付四倍的费用才能方便拥有日期对象。java.util.Date

但是,创建对象的开销不是很高。因此,如果您真的担心空间,请将日期存储为长,并在需要时创建一个Date对象。


答案 2

使用原始长 ?

它不是一个对象,因此空间较小,日期可以表示为长值。然后在“日期”和“长”之间来回转换,当您想要存储日期并使用较少的内存时。