请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于jmm中成员变量在内存中的位置的问题

关于java memory model这块,课程1-5中说:”一个对象的【成员变量】,可能随着对象自身存放在heap上(不论这个成员变量是原始类型还是引用类型),静态成员变量跟随类定义一起存放在heap上。“ 这里老师用了可能,还有其他的可能么?是否会放在其他地方?

正在回答

2回答

https://img1.sycdn.imooc.com//szimg/5be5260c00019c7509420782.jpg

看这个图。两个线程拥有一些列的本地变量。其中一个本地变量(Local Variable 2)执行堆上的一个共享对象(Object 3)。这两个线程分别拥有同一个对象的不同引用。这些引用都是本地变量,因此存放在各自线程的线程栈上。这两个不同的引用指向堆上同一个对象。

0 回复 有任何疑惑可以回复我~
  • 提问者 Ray_Lee_HZ #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-13 00:21:31
奥观海同志 2018-11-08 21:28:29

Class T{

int num;

}

T t = new T();

num在堆上.


T t;

num在栈上.

0 回复 有任何疑惑可以回复我~
  • 提问者 Ray_Lee_HZ #1
    这个是理解的,多谢,不过课程说:“一个对象的【成员变量】,可能随着对象自身存放在heap上”,很好奇为什么用“可能”
    回复 有任何疑惑可以回复我~ 2018-11-08 22:45:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信