JVM运行数据区分为虚拟机栈、本地方法栈、程序计数器、堆区、元空间(方法区)五部分。其中虚拟机栈、本地方法栈和程序计数器属于线程私有,而堆、元空间属于线程共享。
虚拟机栈中存储方法、方法中的局部变量、以及运行时数据,本地方法栈和虚拟机栈类似,只不过本地方法中栈存储的是本地方法的一些数据信息,程序计数器用来表示程序代码的执行位置,每一线程工作时,都会开辟自己的虚拟机栈、本地方法栈、和程序计数器。
堆区,存储对象信息,以及数组,是所有线程共享区域、
元空间存储类加载的相关信息,以及静态变量、常量、运行时常量池等。