这个其实搞清楚每一块的作用就很easy了。首先虚拟机的内存可以划分为:堆,方法区,虚拟机栈,本地方法栈,程序计数器。其中前两个是线程共有,后三个是线程私有。
首先每个线程执行,都需要有个栈,这个栈就是虚拟机栈,这个肯定是私有的。 本地方法栈是用来执行一些本地的方法(这个简单的解释一下,因为JAVA的执行是依托虚拟机的,所以在操作系统和程序之间就会有一层虚拟机隔离,这是java可以实现高度跨平台的原因,但是也因为这个使得java对系统的操作变得很差,不能深入底层,所以java提供了一种机制:native方法,这个方法可以是C/C++等编写的本地方法,java可以调用)。显然,执行这些方法也是需要栈的,所以线程私有。
程序计数器:这个就是标识线程执行到了那一条指令,当然在java里面应该叫做字节码。这个当线程阻塞的时候,肯定要存一下,因为等到CPU下次调用需要知道从哪里开始,所以这个也是线程私有的。
其他的都是线程公共访问区域了,堆就是放各种数据的地方,方法区也能算对的一部分。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。