JVM的空间结构
目录
一、概述
二、分类
1.程序计数器区域(Program Counter Register):
2.Java虚拟机栈(Stack):
3.堆区(Heap):
4.方法区(Method Area):
5.本地方法栈(Native Method Stack):
一、概述
JVM分为5个主要区域:程序计数器区、Java虚拟机栈、堆区、方法区和本地方法栈,用来存储各种不同的信息,如代码、对象实例、变量等等。
二、分类
JVM的空间结构可以分为以下几个部分:
1.程序计数器区域(Program Counter Register):
程序计数器区域是每个线程私有的,它保存了当前线程的执行地址或执行到了哪一行代码,每当线程执行一个方法时,计数器的值就会加一,当执行完方法时,计数器的值就会被清空。
2.Java虚拟机栈(Stack):
每个线程在执行的时候都会有一个栈帧,它用于保存局部变量表、操作数栈、动态链接、方法出口等信息。栈帧是在方法调用时被创建,在方法返回时被销毁。
3.堆区(Heap):
是Java虚拟机管理的最大的一块内存空间,用来存放对象实例。堆空间是被所有线程共享的一块内存区域,在虚拟机启动时便被创建,当堆空间被耗尽时,会触发垃圾回收机制。
4.方法区(Method Area):
用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等信息。
5.本地方法栈(Native Method Stack):
与Java虚拟机栈类似,但是它不是Java虚拟机所规范的部分,它是为了使用Java Native Interface(JNI)技术而预留的。