程序计数器(PC)
程序计数器的特点
PC是一小块内存空间,用于记录当前线程
执行的字节码指令的地址
。如果执行的是本地方法(native),PC里此时显示Undefined
优点:
- 控制程序执行流程
- 每个线程都有PC,因此可以记录每个线程当前执行的位置
特点:
- 随着线程的创建而创建,随着线程的结束而销毁
- 线程私有
- PC只是记录字节码指令的地址,因此是内存中唯一不会出现
OutOfMemoryError
(内存溢出) - PC是一小块内存空间
冷知识:PC是内存中唯一不会出现OutOfMemoryError
(内存溢出)
java虚拟机栈(java 栈)
Java栈是描述java方法运行过程的内存模型,java虚拟机栈会为每一个即将运行的java方法创建栈帧
用于存储该方法的信息。(如:局部变量表)
特点:
- Java栈通常会遇到两个异常,
StackOverFlowError
和OutOfMemoryError
-
StackOverFlowError
java虚拟机不允许Java栈动态扩展,当线程请求栈的深度超过了Java栈的最大深度时,就会抛StackOverFlowError
-
OutOfMemoryError
允许动态扩展,但可使用内存用完无法动态扩展时,抛OutOfMemoryError
-
- Java栈也是随线程创建而创建,随线程销毁而销毁(线程私有)
冷知识: StackOverFlowError
可能还有很多内存
本地方法栈(C栈)
本地方法栈是描述本地方法运行过程的内存模型,因为本地方法(native)通常使用c语言,因此本地方法栈也叫C栈。
本地方法栈结构和Java差不多,也会创建栈帧。但当JVM不支持native方法本地方法栈可以不被创建,否则随线程创建和销毁。
堆
堆是用于存放对象的内存空间
特点:
堆可以动态扩展,但无多余内存扩展时会抛OutOfMemoryError
。
方法区
未完待续
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。