线程共享:元数据区、堆Heap;面试
线程私有:虚拟机栈、本地方法栈、程序计数器;markdown
单个CPU在特定时刻只能执行一个线程,因此多线程经过几块空间的使用,而后不断的争抢CPU的执行时间段。多线程
基本描述ide
方法元空间(方法区)在JVM启动的时候被建立,是被各个线程共享的内存空间,用于存放类和方法的元数据以及常量池,好比Class和Method。学习
在实际的开发中,常常由于加载的类太多,进而致使内存溢出问题,这样能够对元空间的大小进行扩展。线程
与堆的关系3d
元空间存放加载的类信息,当类被实例化时,堆中存储实例化的对象信息,而且经过对象类型数据的指针找到类。指针
基本描述视频
JVM启动时建立堆区,是内存管理的核心区,一般状况下也是最大的内存空间,是被全部线程共享的,几乎全部的对象实例都要在堆中分配内存,因此这里也是垃圾回收的重点空间。对象
堆栈关系
栈是JVM运行时的单位,堆是存储单位,当栈中方法结束,相关对象失去全部引用后,不会立刻被移除堆空间,要等到垃圾收集器运行的时候。
虚拟机栈(Java栈)在每一个线程建立时都会生成一个虚拟机栈,栈的内部是一个个栈帧单元,对应Java方法的调用,其生命周期和线程周期保持一致。用来存储方法的局部遍历,部分执行结果,方法的调用和返回。
栈帧是方法执行的数据集,维持执行过程当中的各类数据信息,执行的方法依次入栈,栈顶存放当前要执行的方法,执行结束后出栈,对于栈没有垃圾回收问题。
基本描述
JVM中程序计数寄存器用来存储下一条将要执行指令的地址,执行引擎获取到指令后进行执行,是线程私有的。它能够看做是当前线程所执行的字节码的行号指示器。
# 最后
更多Java进阶学习资料、2021大厂面试真题、视频资料能够点击这里获取到免费下载方式!
学习视频:
大厂面试真题: