news 2026/5/7 2:09:28

JVM 的内存区域是如何划分的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JVM 的内存区域是如何划分的?

文章目录

  • 一、线程私有区域
      • 1️⃣ 程序计数器(Program Counter Register)
      • 2️⃣ Java 虚拟机栈(Java Stack)
      • 3️⃣ 本地方法栈(Native Method Stack)
  • 二、线程共享区域(大家一起用)
      • 4️⃣ 堆(Heap)⭐重点
      • 5️⃣ 方法区(Method Area)
      • 6️⃣ 运行时常量池(Runtime Constant Pool)
  • 三、JDK8 之后的重要变化(⚠️ 面试常问)

区域线程主要内容
程序计数器私有当前指令位置
虚拟机栈私有方法调用
本地方法栈私有Native 方法
共享对象实例
方法区共享类信息
运行时常量池共享常量、符号引用

一、线程私有区域

1️⃣ 程序计数器(Program Counter Register)

📍干嘛的

  • 记录当前线程正在执行的字节码行号

  • JVM 靠它知道“下一条指令去哪”

📌特点

  • 线程私有

  • 占用内存极小

  • 唯一不会抛OutOfMemoryError的区域

🧠一句话记忆
👉 JVM 的“书签”


2️⃣ Java 虚拟机栈(Java Stack)

📍干嘛的

  • 每个方法调用都会创建一个栈帧

  • 栈帧中包含:

    • 局部变量表

    • 操作数栈

    • 动态链接

    • 方法返回地址

📌特点

  • 线程私有

  • 方法调用 → 入栈

  • 方法结束 → 出栈

💥常见异常

  • StackOverflowError:递归太深

  • OutOfMemoryError:栈空间不够

🧠一句话记忆
👉 方法调用的“通话记录”


3️⃣ 本地方法栈(Native Method Stack)

📍干嘛的

  • Native 方法(JNI)用的栈

  • 例如调用 C / C++ 代码

📌特点

  • 线程私有

  • 和虚拟机栈作用类似,只是服务对象不同

🧠一句话记忆
👉 Java 调用“外援”的专用通道


二、线程共享区域(大家一起用)

4️⃣ 堆(Heap)⭐重点

📍干嘛的

  • 几乎所有对象实例和数组都在这里分配

📌特点

  • 线程共享

  • JVM 中最大的一块内存

  • 垃圾回收(GC)的主战场

🧱常见细分(HotSpot)

  • 新生代

    • Eden

    • Survivor(From / To)

  • 老年代

💥常见异常

  • OutOfMemoryError: Java heap space

🧠一句话记忆
👉 对象的“集中居住区”


5️⃣ 方法区(Method Area)

📍干嘛的

  • 存储类级别信息

    • 类结构信息

    • 方法信息

    • 运行时常量池

    • 静态变量

📌特点

  • 线程共享

  • 逻辑上属于堆的一部分

💥异常

  • OutOfMemoryError: Metaspace(JDK8+)

🧠一句话记忆
👉 类的“说明书仓库”


6️⃣ 运行时常量池(Runtime Constant Pool)

📍干嘛的

  • 存放:

    • 字面量(字符串、数字)

    • 符号引用(类、方法、字段)

📌特点

  • 属于方法区的一部分

  • 运行期间也可以动态加入

🧠一句话记忆
👉 JVM 的“常量词典”


三、JDK8 之后的重要变化(⚠️ 面试常问)

版本变化
JDK7方法区在堆中(永久代 PermGen)
JDK8移除永久代
JDK8+方法区实现为元空间 Metaspace(使用本地内存)
🧠一句话记忆
👉 永久代下岗了,元空间接班,用的是系统内存
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 7:12:37

SQL侦探游戏:从零开始掌握数据库查询的终极实战指南

想要在趣味游戏中轻松掌握SQL技能吗?SQL侦探游戏将带你进入一个充满挑战的数字世界,通过解决案件来学习数据库查询。无论你是完全的SQL新手,还是希望巩固技能的技术爱好者,这个项目都能为你提供绝佳的学习体验。 【免费下载链接】…

作者头像 李华
网站建设 2026/4/29 19:54:35

模拟电子技术初学者手册:完整指南分享

模拟电子技术从零开始:一位工程师的实战入门笔记你有没有试过,在实验室里接好电路,信心满满地打开电源,结果示波器上却是一团乱跳的噪声?或者,明明计算了放大倍数,输出信号却严重失真、甚至自激…

作者头像 李华
网站建设 2026/4/27 7:45:58

SSD1306中文手册详解:硬件复位流程手把手教程

SSD1306硬件复位全解析:从上电到点亮,一个都不能少你有没有遇到过这样的情况?OLED屏幕接好了,代码烧录了,电源也加上了——可屏幕就是不亮,或者显示花屏、乱码。调试半天,IC地址查了一遍又一遍&…

作者头像 李华
网站建设 2026/5/4 19:31:13

PaddlePaddle镜像如何配置token消费审批流程

PaddlePaddle镜像如何配置token消费审批流程 在企业AI平台日益复杂、多团队共用模型服务的背景下,一个看似简单的调用请求背后,可能隐藏着资源滥用、成本失控和安全风险。比如,某业务线突然发起高频OCR识别任务,GPU利用率瞬间飙升…

作者头像 李华
网站建设 2026/5/1 1:18:35

Obsidian日历插件:5个高效时间管理技巧让你的笔记更有条理

还在为笔记杂乱无章而苦恼吗?Obsidian日历插件正是你需要的解决方案。这个简单却强大的工具能将时间维度完美融入你的知识管理系统,让每一份笔记都有迹可循。 【免费下载链接】obsidian-calendar-plugin Simple calendar widget for Obsidian. 项目地址…

作者头像 李华
网站建设 2026/4/27 15:35:38

10分钟掌握MCP安装器:轻松部署MCP服务器的完整指南

10分钟掌握MCP安装器:轻松部署MCP服务器的完整指南 【免费下载链接】mcp-installer An MCP server that installs other MCP servers for you 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-installer MCP安装器是一个革命性的开源工具,专为简…

作者头像 李华