为了账号安全,请及时绑定邮箱和手机立即绑定

Java 对象数组的内存模型是怎样的?

Java 对象数组的内存模型是怎样的?

海绵宝宝撒 2019-01-29 21:33:04
Java 引用类型数组内存模型,下面哪一种是正确的?对象数组的每个元素都会在栈内存中有一个引用吗?看了两个老师的教程,画内存图的时候有点不一样相关代码Person[] per = new Person[]{        new Person("A", 1),        new Person("B", 2),        new Person("C", 3)             };版本1:版本2:我个人觉得两个都对,只是第一是简化版,如果按我的理解,更倾向于版本2。只是有一点疑惑,数组存的是匿名对象,匿名对象会在栈中有引用吗?
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

1是对的,2是错的。java对象在堆中分配,数组是对象,所以分配在堆中

查看完整回答
反对 回复 2019-01-29
?
慕斯王

TA贡献1864条经验 获得超2个赞

图一是正确的,栈里面不存在per[0],pr[1],per[2]这些引用,看一下

Person[] per = new Person[]{        new Person("A", 1),        new Person("B", 2),        new Person("C", 3)        
    };

这段代码在局部变量表只占per一个槽数,locals=1,
可以使用javap -v看一下


查看完整回答
反对 回复 2019-01-29
  • 2 回答
  • 0 关注
  • 1372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信