java线程拷贝的共享对象副本是放在jvm哪个空间中?

java多线程可见性的问题,对于实例的成员变量,它引用的对象在堆中,但线程会copy一份作为自己的副本。我想问这个副本是在线程的栈中,还是在堆中新开辟一块空间?

2个回答

java 内存模型包含5个区:
共享区:方法区、堆
线程私有:虚拟机栈、本地方法栈、程序计数器
所有您说的copy的对象在堆中
具体详情,推荐博客:
https://blog.csdn.net/m0_37602827/article/details/100851772

在堆中,虽说堆是线程共享的区域,但是Java里有个对象叫做ThreadLocal
通过查看ThreadLocal的源码可以知道原理是用Map存储
ThreadLocal可以保证不同的线程有其相对应的map容器来保障

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐