繁体   English   中英

新Object()的内存reserver中有多少空间;

[英]How much space in memory reserver for new Object();

我只是想知道如果我创建一个像“New Object()”这样的新对象,将在内存中保留多少空间。 由于在堆上创建的任何对象占用的空间等于其实例变量的大小总和。

由于在堆上创建的任何对象占用的空间等于其实例变量的大小总和。

不,它需要更多的内存。 指向类型信息的指针以及与对象关联的监视器(用于同步目的)需要额外的内存。

确切的大小因JVM而异(特别是处理器架构)。 对于对齐目的,JVM也可以实现最小大小,但是获得“前4字节字段可用”策略。 例如,假设在64位JVM上,类型指针占用8个字节,监视器信息占用4个字节,您可能仍希望分配16个字节而不是12个用于对齐目的 - 在这种情况下,具有单个int字段的对象可以获取与普通Object实例相同的内存。

问题将是一个非常广泛的问题。

它取决于类变量,或者您可以在java中调用状态内存使用。

它还对标头和引用有一些额外的内存要求。

Java对象使用的堆内存包括

  • 原始字段的内存,根据它们的大小(参见下面的原始类型的大小);

  • 参考字段的内存(每个4字节);

  • 一个对象标题,由几个字节的“管家”信息组成;

java中的对象还需要一些“内务”信息,例如记录对象的类,ID和状态标志,例如对象当前是否可访问,当前是同步锁定等。

Java对象标头大小因32位和64位jvm而异。

虽然这些是主要的内存消费者,但jvm还需要额外的字段,有时候需要对齐代码等

原始类型的大小

布尔和字节 - 1

char&short - 2

int&float - 4

长和双 - 8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM