gpt4 book ai didi

java - java.lang.Integer 保留的大小是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:32 25 4
gpt4 key购买 nike

我正在使用 Java Hotspot 1.8.0_191-b12(64 位,Xmx < 32 GB),我正在使用各种工具查看 jmap 转储(hprof 格式)。

VisualVM(和基于 NetBeans 分析器的工具)报告与 Yourkit 和 Eclipse Memory Analyzer 有很大不同。

我查看了最简单的对象,甚至那些不同的...对于 java.lang.Integer,VisualVm 报告 20 个字节,而不是其他的 16 个字节(在我的解释中是因为 = 12 个字节的 header + 4 个字节从 Integer 类提交的 int 'value' = 16,不需要填充)。

哪个是正确的,为什么?

最佳答案

唯一正确使用的工具是 JOL , 所有其他人可能都不准确。

并且报告 16 字节:12 个用于 header + 4 个用于 int 本身(所以你是正确的)。

  Integer i = 42;

System.out.println(ClassLayout.parseInstance(i).toPrintable());

我将让您自己运行这段代码并查看输出。请注意,如果 UseCompressedOops 被禁用,它可能会更多;在这种情况下,会有一个额外的 4 bytes + 额外的 4 bytes 用于填充。

关于java - java.lang.Integer 保留的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com