网站前端模板下载,性价比高柳州网站建设,网页制作官网,网站备案在哪里审批JVM的五大内存区域
JVM内存区域最粗略的划分可以分为 堆 和 栈 #xff0c;当然#xff0c;按照虚拟机规范#xff0c;可以划分为以下几个区域#xff1a; JVM内存分为线程独享区和线程共享区#xff0c; 其中 方法区 和 堆 是线程共享区#xff0c; 虚拟机栈, 本地方法…JVM的五大内存区域
JVM内存区域最粗略的划分可以分为 堆 和 栈 当然按照虚拟机规范可以划分为以下几个区域 JVM内存分为线程独享区和线程共享区 其中 方法区 和 堆 是线程共享区 虚拟机栈, 本地方法栈和程序计数器是线程独享区,为单个线程服务. 程序计数器Program Counter Register 程序计数器是一块较小的内存区域它可以看作是当前线程所执行的字节码的行号指示器。每个线程都有自己独立的程序计数器用于记录当前线程执行的位置以便线程切换后能够恢复到正确的执行位置。 Java虚拟机栈Java Virtual Machine Stack 每个线程在执行Java方法时都会创建一个对应的栈帧Stack Frame用于存储局部变量、方法参数、操作数栈和动态链接等信息。栈帧的大小在编译时就确定下来栈的大小也可以在启动时进行调整。 本地方法栈Native Method Stack本地方法栈与Java虚拟机栈类似但是它为本地方法Native Method服务。本地方法是使用其他语言如C、C编写的方法它们与Java代码进行交互需要独立的栈来支持。 Java堆Java HeapJava堆是Java虚拟机管理的最大一块内存区域用于存储对象实例和数组。Java堆是所有线程共享的它在JVM启动时被创建并且在运行时进行动态扩展或收缩。垃圾回收器负责在堆上进行垃圾回收以释放不再使用的对象。Java堆是垃圾收集器管理的内存区域因此一些资料中它也被称作“GC堆”Garbage Collected Heap。从回收内存的角度看由于现代垃圾收集器大部分都是基于分代收集理论设计的所以Java堆中经常会出现 新生代 、 老年代 、Eden空间 、 From Survivor空间 、 To Survivor空间 等名词需要注意的是这种划分只是根据垃圾回收机制来进行的划分不是Java虚拟机规范本身制定的。 方法区Method Area方法区也称为永久代Permanent Generation用于存储已加载的类信息、常量、静态变量、即时编译器编译后的代码等。在JDK 8及之后的版本中永久代被移除取而代之的是元空间Metaspace它使用本地内存来存储类的元数据