![](/img/trans.png)
[英]In Java, How much memory is allocated on stack and heap for “new Object()”
[英]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.