java类中成员变量初始化后存放在堆内存中还是栈内存中?

 我来答
孤独飞雪飘
推荐于2018-05-14 · 只要有你陪我,静静的就足够!
孤独飞雪飘
采纳数:2228 获赞数:9895

向TA提问 私信TA
展开全部
栈内存:某一个函数被调用时,这个函数会在栈内存里面申请一片空间,以后在这个函数内部定义的变量,都会分配到这个函数所申请到的栈。当函数运行结束时,分配给函数的栈空间被收回,在这个函数中被定义的变量也随之被释放和消失。

堆内存:通过new产生的数组和对象分配在堆内存中。堆内存中分配的内存,由JVM提供的GC(垃圾回收机制)来管理。在堆内存中产生了一个数组对象后,我们还可以在栈中定义一个变量,这个栈中变量的取值等于堆中对象的首地址。栈内存中的变量就成了堆内存中数组或者对象的引用变量。我们以后就可以在程序中直接使用栈中的这个变量来访问我们在堆中分配的数组或者对象,引用变量相当于数组或者对象起的一个别名,或者代号。

引用变量是一个普通的变量,定义时在栈中分配;引用变量在被运行到它的作用域之外时就被释放,而我们的数组和对象本身是在堆中分配的,即使程序运行到使用new产生对象的语句所在的函数或者代码之后,我们刚才被产生的数组和对象也不会被释放。数组和对象只是在没有引用变量指向它,也就是没有任何引用变量的值等于它的首地址,它才会变成垃圾不会被使用,但是它任然占据着内存空间不放(这也就是我们Java比较吃内存的一个原因),在随后一个不确定的时间被垃圾回收器收走。
努力的夜星
2019-10-02
知道答主
回答量:1
采纳率:0%
帮助的人:697
展开全部
成员变量分为静态变量和实例变量,静态变量存放在方法区内存,实例变量存放在堆内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ant文库
2013-01-23 · 超过18用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:26.9万
展开全部
变量声明放在栈里面,对象实例放在堆.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
非鱼共享
2013-01-23 · 专注互联网技术,快速了解互联网研发
非鱼共享
采纳数:204 获赞数:695

向TA提问 私信TA
展开全部
栈存的是引用,堆放数据,
A a = new A();
a是引用,new A();在堆中,即成员变量在new A();中
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxblxlu
2013-01-23 · 超过10用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:35.9万
展开全部
放在栈内存里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式