1

我在我的 JVM 上运行 jmap 试图了解一些内存泄漏,我发现了一些奇怪的东西:java.lang.Long使用 24 字节而不是 8 字节!

有人能告诉我我的错误在哪里吗?

 num     #instances         #bytes  class name
----------------------------------------------
   1:      11043837      530104176  java.util.HashMap$Entry
   2:      15788616      378926784  java.lang.Long
   3:       2933013      301617976  [C


#bytes / #instance => 378926784 / 15788616  => 24 bytes

怎么回事????

4

1 回答 1

0

好的,我不得不刷新我对 java 内存使用的了解。

8 个字节用于长原始类型。

对于一个对象(如 java.lang.Long),标头有 8 个字节的开销。现在; 我已经解决了一半的问题,但仍然缺少 8 个字节......

于 2012-10-31T20:39:31.190 回答