「java内存对象」java内存存储

博主:adminadmin 2023-03-17 00:14:05 481

本篇文章给大家谈谈java内存对象,以及java内存存储对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

一个Java对象到底占多大内存

对象头

对象头在32位系统上占用8bytes,64位系统上占用16bytes。

实例数据

原生类型(primitive type)的内存占用如下:

Primitive Type Memory Required(bytes)

boolean 1

byte 1

short 2

char 2

int 4

float 4

long 8

double 8

reference类型在32位系统上每个占用4bytes, 在64位系统上每个占用8bytes。

对齐填充

HotSpot的对齐方式为8字节对齐:

(对象头 + 实例数据 + padding) % 8等于0且0 = padding 8

指针压缩

对象占用的内存大小收到VM参数UseCompressedOops的影响。

1)对对象头的影响

开启(-XX:+UseCompressedOops)对象头大小为12bytes(64位机器)。

static class A {

int a;

}

Java对象的内存分配

栈内存放引用型变量,指向堆里面new出来的对象

堆内存放new出来的对象

方法只有一份用来共享,只有在执行的时候才在内存中分配空间,如图:

java的方法中new的对象存储在内存中那个区域

这个对象存在堆中,还是栈中?

答:堆,new一个对象,一定是在堆中

方法内部new出来的对象,在哪里存着?

答:堆,new出来对象的实例变量都存在堆上面。

栈,这个东西,需要理解为:线程运行时,才会创建,执行完,就没了。

Person p = new Person();

上面这段代码,在执行时,p压入栈,通过局部变量表,找到对应的【实例数据】,执行完毕后释放。

关于java内存对象和java内存存储的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。