JVM内存结构中有哪些是线程私有的?


JVM的内存区域结构如下

内存区域大概可分为方法区,堆,虚拟机栈,本地方法栈,程序计数器,还会有直接内存(虚拟机对内存之外,但属于及其内存的一块区域)

上述中虚拟机栈,本地方法栈,程序计数器是线程私有的

程序计数器:

例如有A,B两个线程,两个线程需要自己记录具体执行到哪一行代码,这条代码执行完了,需要使用程序计数器指向下一条需要执行的代码。有了程序计数器,两个线程就知道自己应该做什么,以及下一步应该做什么,不会互相影响。

虚拟机栈:

线程在执行的过程不可避免要在方法之间跳转,虚拟机栈就是用来记录线程需要执行那些方法。

虚拟机栈是由栈帧组成的,一个栈帧对应一个方法调用,一个方法调用完就会从虚拟机栈中出栈

跟程序计数器的道理是一样的,虚拟机栈会决定线程自己的方法调用路径。

本地方法栈:

跟虚拟机栈差不多,只不过本地方法栈的作用对象是native方法

你可能感兴趣的:(JVM内存结构中有哪些是线程私有的?)