jvm线程问题

来源:3-5 Java 泛型的实现机制是怎样的?

用户1148542

2019-07-25

请教下老师jvm内存模型中分5大块,像堆和方法区在线程共享,二其他三块在线程私有里面,请问下什么在jvm中什么是线程共享,线程私有

写回答

1回答

bennyhuo

2019-07-25

说的没错,堆内存方法区都是共享的,方法调用栈是私有的。

讨论一个实际的例子,方法内部定义的引用是在栈上,引用指向的对象在堆上,其实这部分通常因为其他线程语法访问线程私有的栈,因而也无法拿到指向的堆内存,但如果在方法中切换线程,例如启动Thread,那么Thread的run会有机会访问外部的局部变量,这时候尽管不能修改外部方法栈,但可以修改外部栈指向的对象,因为堆是共享的。

0
8
bennyhuo
对,是在常量池里面
2022-02-03
共8条回复

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程