- 0
- 0
- 约1.16万字
- 约 6页
- 2019-12-01 发布于河北
- 举报
JVM 运行时数据区
目录
JVM 运行时数据区1
2.5.1 程序计数器(The pc Register )2
2.5.2 栈(Java Virtual Machine Stacks )2
2.5.3 堆(Heap )2
2.5.4 方法区(Method Area )3
2.5.4 运行时常量池 (Runtime Constant Pool )3
2.5.5 本地方法栈 (Native Method Stacks )3
2.5.1 The pc Register 3
2.5.2 Java Virtual Machine Stacks 4
2.5.3 Heap 4
2.5.4 Method Area 5
2.5.5 Runtime Constant Pool 5
2.5.6 Native Method Stacks 5
本文是 《The Java Virtual Machine Specification (Java SE 7 Edition )》运行时区的翻译,
原文参见:/javase/7/specs/jvms/JVMS-JavaSE7.pdf
JVM 定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM 启动
的时候创建,在 JVM 退出的时候销毁。其他的数据依赖于每一个线程,在线程创建的时候
创建,在线程退出的时候销毁。
方法区 Eden区
年轻代
堆 Survivor区
年老代
JVM 的运行
本地方法栈
时区域
程序计数器
局部变量区
栈 多个栈针
操作数栈
2.5.1 程序计数器(The pc Register )
JVM 一次能支持很多线程执行。每一个JVM 线程有它自己的程序计数器。在任何时候,
一个 JVM 的线程都正在执行当前线程的方法代码。如果这个方法不是本地方法,程序计数
器包含当前被执行的 JVM 地址。如果线程正在执行本地方法,程序计数器的值为未定义。
JVM 程序计数器足以存储一个返回地址或一个本地指针。
2.5.2 栈 (Java Virtual Machine Stacks )
每个JVM 的线程在创建的时候,都会创建一个栈。一个栈包含很多栈桢。JVM 的栈好
比传统语言C 的栈,它维持(存储)本地变量和部分结果,并在方法调用和返回中(被)使用。
由于JVM 栈除了压入和弹出栈帧之外不能被直接操作,栈帧可以在堆上分配空间。 JVM 说
明书(规范)允许栈要么是一个固定大小,要么动态扩展来满足计算的要求。如果JVM 栈是一
个固定的大小,当栈被创建的时候每一个栈大小可以自由设置。 在动态扩展情况下,可以
控制最大最小内存。 在VM Spec 中对这个区域规定了2 种异常状况(以下两种异常与JVM
的栈机制有关):
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常。
如果 VM 栈可以动态扩展,当扩展时无法申请到足够内存(或者在初始化新线程时没有
足够内存在创建栈)则抛出OutOfMemoryError 异常。
2.5.3 堆(Heap )
JVM 有一个在所有线程内共享的堆。堆是给所有类的实例和数组分配内存的运行时数据
区。 堆在虚拟机启动的时候创建,堆中储存的
您可能关注的文档
- HEIDENHAIN直线光栅尺.pdf
- HH210型连续扩容蒸发器(淡碱回收装置).doc
- Hi-Q200产品介绍.pdf
- Hi3516开发学习心得.doc
- HID 报告描述.pdf
- HIV初筛实验原始记录.doc
- HIV快速检测原始记录.doc
- HIV阳性男男性行为人群多性伴高危性行为状况及其影响因素分析解析.pdf
- HIZ与椎间盘造影在椎间盘源性腰痛诊断中的对比研究.pdf
- HMI 与 三菱 PLC 的以太网通讯.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)