一个对象创建的时候,到底是在堆上分配,还是在栈上分配呢?

这要根据对象的类型和对象在Java类中的位置来判断

对象类型 对象在Java类中的位置 分配在JVM内存结构中的位置
普通对象 方法体外(全局)
普通对象 方法体内(局部)
基本数据类型 方法体外(全局)
基本数据类型 方法体内(局部)

总结

可以知道对象都是存在堆上的(这里不考虑逃逸分析),其他地方拥有的只不过是对象的一个引用,而基础数据类型则根据在Java类中的位置来做具体分配,这里要强调的是,数组不是基础数据类型,而是对象,所以像int[]这样的数组其实也是分配在堆上的。

原创文章 358 获赞 387 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/105514441
今日推荐