JVM的内存区域
JVM的内存区域分为线程私有区域和线程共有区域,私有区域分为程序计数器,虚拟机栈、本地方法区、线程私有域的生命周期与线程相同,随线程的启动而创建,随线程的结束而结束,JVM中,每个线程都与操作系统的本地线程直接映射。线程共有区域分为堆、方法区。线程共有域随虚拟机的启动而创建,随虚拟机的关闭而销毁。
程序计数器
是一块很小的内存空间,作用是存储当前运行的线程所执行的字节码的行号指示器,每个线程都有一个独立的程序计数器,在方法执行时,该方法的程序计数器吉利的是实时虚拟机字节码指令的地址,
虚拟机栈
记录Java方法的执行过程,在当前栈中存储局部变量,操作数栈,动态链接,方法出口等信息,同时存储部分的运行时的数据机器数据结构,处理动态方法的链接方法的返回值和异常分派。在执行方法时虚拟机会创建一个与之对应的栈帧,方法的执行和方法的返回与虚拟机中的入栈和出栈对应。
本地方法区
本地方法区与虚拟机栈的作用类似,区别是虚拟机栈执行的是java方法,本地方法区执行Native方法
堆
在JVM运行过程中创建的对象和产生的数据都被存储在堆中,线程共享区域,也是垃圾回收器进行回收的最主要的区域,
方法区
作用是存储常量、静态变量、类信息、即时编译器编译后的机器码,运行常量池等数据
常量、静态变量都被存储在运行时常量池中,是方法区的一部分,在类信息文件中不但保存了类的版本,字段,方法,接口等描述信息,还包括常量信息
即时编译后。代码的内容将在执行阶段被保存在方法区的运行时常量池中,
来源:https://www.cnblogs.com/xiaoxiaobai0628/p/12318090.html