JVM 运行时数据区

简介: 翻译人员: 铁锚 翻译时间: 2013年11月11日 原文链接: JVM Run-Time Data Areas 参考地址: JVM运行时是什么样子? 这是阅读JVM规范时的笔记, 我画了一幅图来帮助自己加深理解:图1 JVM运行时数据区 1.
翻译人员: 铁锚
翻译时间: 2013年11月11日
原文链接: JVM Run-Time Data Areas
参考地址: JVM运行时是什么样子?

这是阅读JVM规范时的笔记, 我画了一幅图来帮助自己加深理解:

图1 JVM运行时数据区
1. 单线程数据区(非共享)
从上图可以看出,每个线程都有自己独立的数据区,包括 PC(程序计数器),JVM(方法)栈,以及本地方法栈. 当创建新线程时,这些数据区域将会一并创建.

程序计数器: 英文名字是 Program Counter Register,简称PC, 用于记录每个线程执行到哪个地方了(可以认为程序是指令的序列,PC记录着下一条(或本条)应该执行的指令的地址).
JVM方法栈:  包含如下面的图所示的一些栈帧(frame).
本地方法栈: 英文为 Native Method Stack,顾名思义,适用于供 native方法使用的内存空间,本地方法(native method)指不用Java语言开发的方法,如 C,C++,PB等编译型语言所开发的动态链接库(中的方法).

2. 所有线程共享数据区
堆内存 和 方法区 是所有线程共享的数据区.

堆内存: 英文名称 Heap,是Java编程最频繁使用的内存区域. 其中存储着 数组和对象,当 JVM启动时即创建此内存区域, 垃圾回收主要是指堆内存的回收。
方法区: Method Area,存储了 运行时常量池,类结构信息(field and method data) 以及 方法,构造器的代码.
运行时常量池: Runtime Constant Pool, 每一个类或者接口,在其编译后生成的 .class文件中,有一个部分叫做 常量表(constant_pool_table),JVM将class文件加载以后,就解析常量表的内容到运行时常量池. 包括编译时方法中就明确可知的数字值,String值, 以及必须在运行时解析的属性域引用(field reference).

图2 JVM栈

JVM栈(Stack)由一个个的 栈帧(Frame)组成,当一个方法被调用时会自动压入一个栈帧到Stack中. 每个栈帧(frame)由局部变量区,操作数栈,以及对常量(池)的引用组成.

想要了解更详细的信息,建议访问: JVM官方文档.

相关文章:

  1. JVM运行时是什么样子?
  2. What does a Java array look like in memory?
  3. What can we learn from Java HelloWorld?
  4. A simple Swing GUI example for Observer Design Pattern

目录
相关文章
|
17天前
|
存储 缓存 算法
深入浅出JVM(二)之运行时数据区和内存溢出异常
深入浅出JVM(二)之运行时数据区和内存溢出异常
|
2天前
|
监控 Java 测试技术
滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境
【5月更文挑战第20天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
10 1
滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境
|
5天前
|
安全 Java
【JVM】运行时数据区、程序计数器
【JVM】运行时数据区、程序计数器
4 0
|
17天前
|
存储 缓存 Java
JVM 运行时内存篇
JVM 运行时内存篇
11 0
|
17天前
|
存储 监控 安全
JVM工作原理与实战(十九):运行时数据区-方法区
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了方法区、方法区在Java虚拟机的实现、类的元信息、运行时常量池、字符串常量池、静态变量的存储等内容。
19 0
|
17天前
|
存储 Arthas 监控
JVM工作原理与实战(十八):运行时数据区-堆
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了运行时数据区、堆介绍、堆的关键参数等内容。
15 0
|
3天前
|
Java Linux
JVM堆内存诊断
JVM堆内存诊断
9 0
|
7天前
|
存储 Java 对象存储
JVM(内存区域划分)
JVM(内存区域划分)
24 1
|
1天前
|
存储 算法 Java
JVM性能调优:内存模型及垃圾收集算法
JVM性能调优:内存模型及垃圾收集算法
9 0
|
3天前
|
存储 安全 Java
浅谈JVM内存结构
浅谈JVM内存结构
7 0