JVM运行时数据区域
这是我阅读JVM规范的注释,我画了一个图表,帮助我理解。
1、每个线程的数据区域(不共享)
每个线程的数据区域包括程序计数器寄存器、JVM堆栈和本机方法堆栈。它们都是在创建新线程时创建的。
- 程序计数器寄存器:用于控制每个线程的每次执行。
- JVM堆栈:它包含如下图所示的帧。
- 原生方法栈:支持原生方法,即非Java语言方法。
2、所有线程共享的数据区域
共享所有堆线程和方法。
- Heap:这是我们最常接触的领域。并在JVM启动时存储对象。垃圾收集工作在这个地区。
- 方法区:它存储运行时常量池、字段和方法数据以及方法和构造函数代码
- 运行时常量池:它是类文件中常量池表的每个类或每个接口的运行时表示。它包含几种常量,从编译时已知的数字字面值到必须在运行时解析的方法和字段引用。
堆栈包含帧,并且在调用方法时将帧推送到堆栈中。帧包含局部变量数组、操作数堆栈、对常量池的引用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律