
- 方法区(Method Area):
- 主要存储类的结构信息,如类的字段信息、方法信息、构造方法信息等。
- 运行时常量池,用于存储编译期生成的各种字面量和符号引用。
- 永久代(Permanent Generation):在 JDK 7 及之前版本使用,JDK 8 开始移除了永久代,用元空间(Metaspace)代替。

2.堆(Heap):
- 存储对象实例,包括程序中创建的对象以及 Java 虚拟机自动创建的对象。
- 堆空间可以分为新生代和老年代,还包括持久代(JDK 7 及之前版本)或元空间(JDK 8 及之后版本)。

3.栈(Stack):
-
- 存储局部变量、操作数栈、方法出口等信息。
- 每个线程都有一个私有的栈,用于存储方法的局部变量和部分结果。
- 栈(Stack)是一种数据结构,它按照后进先出(Last In, First Out,LIFO)的原则管理数据,即最后进入的元素最先被访问。栈可以看作是一种特殊的线性表,只允许在一端进行插入和删除操作,该端被称为栈顶(Top),而另一端被称为栈底(Bottom)。

4.本地方法栈(Native Method Stack):
- 与栈类似,用于存储执行本地(native)方法的数据。
- 本地方法栈(Native Method Stack)是Java虚拟机(JVM)内存模型中的一部分,用于支持本地方法的调用。本地方法指的是用非Java语言(如C、C++)编写的,通过Java Native Interface(JNI)在Java程序中调用的方法。
- 在Java程序中,当需要调用本地方法时,JVM会创建一个本地方法栈,用于执行本地方法的操作。与虚拟机栈类似,本地方法栈也是线程私有的,每个线程都有自己的本地方法栈。

5.程序计数器(Program Counter Register):
- 每个线程都有一个程序计数器,用于存储当前线程正在执行的指令的地址。
- 线程切换时,程序计数器也会切换到相应线程的执行地址。

1883

被折叠的 条评论
为什么被折叠?



