运行时数据区结构图如下:
可分为 5 个区域,分别是方法区、堆区、虚拟机栈、本地方法栈、程序计数器。这里大概介绍一下各个模块的作用,会在后面的文章展开讲。
类加载子系统会把类信息加载到方法区,程序运行时会创建线程,每个线程都有自己的虚拟机栈、本地方法栈、程序计数器,线程每执行一个方法就会创建一个栈帧,如果执行的是 JVM 本地方法则会创建一个本地方法栈帧。线程执行期间创建的对象会被放到堆区。程序计数器的作用是记录当前线程要执行的下一条指令的地址。
方法区、堆区为线程共享。类加载子系统会把类加载到方法区;所有线程创建的对象都会放到堆区;
Java方法栈区里的栈、本地方法栈区里的栈、程序计数器每个线程都会创建,属于线程独享。
后面的文章展开介绍各个区域。