当前位置: 首页 > 知识库问答 >
问题:

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

翁阳曜
2023-03-14

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

哪一个是正确的,为什么?

共有1个答案

宰父飞白
2023-03-14

唯一正确的工具是JOL,其他工具可能都不准确。

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

  Integer i = 42;

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

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

 类似资料:
  • 问题内容: 我最近在Netbeans(6.7)中增加了对Profiler的使用,这是一个很棒的工具。 我有一个问题。进行堆转储时,可以在摘要页面(期望窗口)上“按保留的大小查找最大的对象”。 这个值是什么,如何将其用于分析内存使用情况? 问题答案: 对象的保留大小是该对象从垃圾回收保留的内存量。 形式上的定义是“对象的大小加上递归仅由第一个对象引用的所有对象的大小”。 有关保留的内存是什么的更多说

  • 问题内容: 我尝试使用Python的ConfigParser模块保存设置。对于我的应用程序,重要的是要在我的部分中保留每个名称的大小写。文档提到将str()传递给ConfigParser.optionxform()可以完成此操作,但对我而言不起作用。名称均为小写。我想念什么吗? 我得到的Python伪代码: 问题答案: 该文档令人困惑。他们的意思是: 即覆盖optionxform,而不是调用它;重

  • 有很多关于堆大小的帖子和站点,但是没有一个提到在调用JVM时如何找出我可以保留的最大可能堆大小。 任务是用最大可用堆大小xmx=max动态启动我的jvm(这里不需要讨论这个任务的对象!)。 我们可以考虑读取当前可用或空闲的内存,并将该大小用于xms和XMX。但这不起作用。 调用Java程序时: Java-XMS1536M-XMX1536M myApp 导致: 选择您选中的应用程序大约需要的堆。并在

  • 我有一个对象。该对象有一个功能,即多边形对象,它本身由多个多边形对象组成。 我想子集空间多边形对象,以便多边形对象只有一个多边形对象,即面积最大的多边形。 我已经尝试了许多不同的方法,但都不知道如何在子多边形层次上设置子集。 下面是一个例子: 在此示例中,SpP有一个多边形对象。多边形对象的第一个子多边形具有面积5.5,第二个子多边形具有区域1.5。我希望将SpatialPolygons对象子集化

  • 问题内容: 由于(当前)仅支持将字符串作为值,并且为了做到这一点,需要先将对象进行字符串化(存储为JSON- string),然后才可以定义值的长度。 有谁知道是否存在适用于所有浏览器的定义? 问题答案: 储存空间 暗示,使用DOM存储,您具有比对Cookie施加的典型用户代理限制更大的存储空间。但是,提供的数量未在规范中定义,用户代理也没有有意义地广播。 如果您查看Mozilla源代码,我们可以

  • 问题内容: “摘要”选项卡上的Jvisualvm堆转储具有按保留的大小检查最大对象的功能。 保留的真正含义是什么?对象树的大小如何计算并显示在此处? 如果我在这里可以看到对象(10M)及其成员对象(5M),我应该如何计算堆影响。他们俩都占用了10M或15M的堆吗? 为什么我看不到我们的外观巨大的应用程序对象? 谢谢。 问题答案: 保留的真正含义是什么? 完整的gc之后,大小会是多少。例如,具有大量