java对象内存存储

JAVA内存中堆与栈的区别

区分

在函数中定义的一些基本类型的变量和对象引用都是在函数的堆栈内存中分配

堆内存用于存放由new创建的对象和数组

在堆内存中分配的内存,由java虚拟机自动垃圾回收来管理。在堆内存中产生了一个数组或对象后,还可以在栈内存中定义一个变量,这个变量可以作为数组或对象的应用变量,在程序使用过程中就可以通过引用变量来来访问堆内存中的数组和对象。

java中对象的引用及存储

Person p = new Person();

这行代码创建了Person实例,这个Person对象被被赋给p变量。
Person类定义来看,Person对象包含两个属性需要被存储,这都需要内存来存储。
这里写图片描述
类本身也是种引用型数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被放到了栈内存中,指向实际的Person对象;
而真正的Person对象则放在堆内存中。
这里写图片描述
当一个对象创建成功了,对象保存在堆内存中,Java程序不允许直接访问堆内存中的对象,只能通过该对象的引用来操作对象。
p引用变量本身只存储了一个地址,冰未包含任何实际的数据,但其指向实际对象Person,当访问p时,访问的是p所引用的对象及方法。

多个对象可以对应多个引用。

如果堆内存中的对象没有任何变量指向该对象,那么程序也将无法访问该对象,此时该对象变成了垃圾,
java的垃圾回收机制将会回收该对象,释放该对象所占用的内存。
`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值