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

来源:1-5 JAVA内存模型

Ray_Lee_HZ

2018-11-08

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

写回答

2回答

Jimin

2018-11-09

//img.mukewang.com/szimg/5be5260c00019c7509420782.jpg

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

0
1
Ray_Lee_HZ
非常感谢!
2018-11-13
共1条回复

奥观海同志

2018-11-08

Class T{

int num;

}

T t = new T();

num在堆上.


T t;

num在栈上.

0
1
Ray_Lee_HZ
这个是理解的,多谢,不过课程说:“一个对象的【成员变量】,可能随着对象自身存放在heap上”,很好奇为什么用“可能”
2018-11-08
共1条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程