标签:处理器 最大的 字节码 动态链接 err 操作 mamicode 多线程 正在执行
Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为若干个不同的数据区域。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示
程序计数器: 可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
特点
虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时,都会创建一个栈帧,用于存储局部变量表,操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机中入栈到出栈的过程
本地方法栈和虚拟机栈的作用差不多,唯一的区别就是本地方法栈是在执行Native方法服务
特点
与Java堆一样,是各个线程共享的内存区域。用来存储已被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码等数据
运行时常量池时方法区的一部分。用来存放编译期生成的各种字面量和符号引用。这部分内容将在类加载后进入方法区的运行时常量池中存放。
直接内存并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。
既内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机)
描述有不恰当之处,还望不吝指教
标签:处理器 最大的 字节码 动态链接 err 操作 mamicode 多线程 正在执行
原文地址:https://www.cnblogs.com/MacrossFT/p/12813615.html