首页新闻找找看学习计划

关于JVM内存结构的问题

0
悬赏园豆:10 [待解决问题]

我们都说JVM内存结构中,堆,方法区是线程共享的;java栈,本地方法栈,寄存器是线程私有的。

那么问题来了,在栈中也就是一个方法中创建的对象是存在栈中吗?根据我看到的资料,栈中只存放对象的引用,而对象放在堆中,这样的话,对栈来讲每个线程访问都会创建对象,而对象都放在堆中,那堆中的对象不就不一定是线程共享的了吗?

对方法内创建的对象而言,这是线程私有的,谁能回答我这个问题呢?是归类不严谨还是我理解有误?

天尘·云烟的主页 天尘·云烟 | 初学一级 | 园豆:149
提问于:2019-09-05 11:25
< >
分享
所有回答(1)
0

你这里理解的共享跟私有有点不一样,java栈,本地方法栈,寄存器是线程私有的是指每个线程都会有一个独立的,生命周期随着线程的创建而创建,死亡而死亡。堆是共享的,不是说他里面的对象就是大家都可以随便访问,全部线程共享,只是说堆里面的内存是全部线程共享的。方法内创建的对象,还是存放在堆里面,调用对象都是通过对象的引用去访问对象。为什么能私有呢,就是因为它的引用只有在你该线程的栈中有。

魔力员 | 园豆:216 (菜鸟二级) | 2019-10-09 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册