1.静态变量的引用存在哪2.ThreadLocal相关问题

Finn 2018-09-09 10:02:34
1.假如在类中定义了一个静态变量A a=new A(),以及一个方法b(),在这个方法内会对a进行操作,假设同时有多个线程访问这个方法,此处不考虑线程安全,我想问的是,在各个线程访问方法所形成的栈帧中,是否各持有一份引用a?若在方法b没有对a进行操作,那么执行b所形成的栈帧中是否存在引用a?
2.https://www.cnblogs.com/onlywujun/p/3524675.html
关于这篇博文的图以及所总结的内容,(ThreadLocal的,文章很短)
有个问题想请教下,假设在多个线程并发访问的情况下,其中某个线程将Stack的ThreadLocalRef置为null,不是还存在其它线程对ThreadLocal的强引用吗?
...全文
704 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr.chen108 2019-12-08
  • 打赏
  • 举报
回复
静态变量的引用存放在堆中,但是引用指向的静态变量存放在方法区里面
Finn 2018-09-11
  • 打赏
  • 举报
回复
引用 1 楼 verejava 的回复:
JVM 虚拟机 之 内存分配代码图解 静态变量

http://www.verejava.com/?id=17432987240113
谢谢,辛苦了
Finn 2018-09-11
  • 打赏
  • 举报
回复
谢谢,简单粗暴
wildyy 2018-09-11
  • 打赏
  • 举报
回复
b方法如果有使用a,在那个步骤时,线程会将a引用放入线程工作空间再使用,也就是引用的一份拷贝,将a置为null后会将null值回写到实际a中,也正是由于这个机制才会存在线程安全问题
verejava 2018-09-10
  • 打赏
  • 举报
回复
JVM 虚拟机 之 内存分配代码图解 静态变量

http://www.verejava.com/?id=17432987240113
冲上云霄 、 2018-09-10
  • 打赏
  • 举报
回复
静态的东西会统一放在方法区中,在类第一次被加载的时候加载,谁需要谁就指向他们,可以说是共享的。是,否,对。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧