「java内存对象」java内存存储
本篇文章给大家谈谈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内存存储的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。