JVM--5-深入 JVM 方法区:类的元数据之家 📅 发布时间:2026/7/11 18:56:41 👁️ 浏览次数: JVM 第5讲深入 JVM 方法区 —— 类的元数据之家方法区Method Area是 JVM 运行时数据区中非常重要但又经常被误解的一个区域。它主要存储的是已经被虚拟机加载的类信息也被称为“类的元数据之家”。在不同 JDK 版本中方法区的实现发生了很大的变化我们需要分版本来理解。1. 方法区的演变历史重点掌握JDK 版本方法区实现方式是否属于堆内存是否有永久代PermGen实际名称HotSpot是否可动态扩展GC 方式大致JDK 6 及之前永久代PermGen是有Permanent Generation固定大小Full GC 时回收JDK 7永久代部分移出是有但字符串池移到堆Permanent Generation固定大小Full GCJDK 8 及以后元空间Metaspace否无Metaspace动态扩展触发 Metaspace GCFull GC最核心的变化点面试高频JDK 8 开始永久代被彻底移除元空间Metaspace取代了它元空间使用本地内存Native Memory不再受 -XX:MaxPermSize 限制元空间默认情况下可以动态增长受系统可用虚拟内存限制2. 方法区到底存放什么元数据内容无论永久代还是元空间方法区主要存储以下内容类信息Class Metadata类名、父类名、接口列表字段Field信息名称、类型、修饰符、属性值static final 常量方法Method信息名称、描述符、字节码、异常表、局部变量表、操作数栈大小等运行时常量池Runtime Constant PoolClass 文件中常量池表的运行时表示字面量Literal文本字符串、声明为 final 的基本类型常量符号引用Symbolic Reference类和接口的全限定名、字段名和描述符、方法名和描述符静态变量类变量static 修饰的变量JDK 7 之前在永久代JDK 7 开始移到普通堆对 JIT 编译器产生的代码缓存部分版本注意静态变量本身在 JDK 7 之后已经不在方法区了而是放在堆的普通对象实例中但 static final 常量仍可能留在运行时常量池。3. 运行时常量池Runtime Constant Pool详解运行时常量池是方法区非常重要的一部分也是最容易和“字符串常量池”混淆的区域。包含内容字面量如hello、100、true符号引用类、方法、字段的符号引用在类加载的解析阶段会被解析为直接引用字符串常量池的变迁常考JDK 版本字符串常量池位置是否在方法区说明JDK 6 及之前永久代是字符串常量池在方法区JDK 7堆普通堆内存否永久代中移出字符串常量池JDK 8堆元空间不包含字符串池否字符串常量池在堆中元空间只存类元数据经典面试题Strings1hello;Strings2newString(hello).intern();System.out.println(s1s2);// true 或 false 为什么JDK 7trueintern() 会把字符串放入字符串常量池并返回引用4. 元空间Metaspace vs 永久代PermGen对比项永久代PermGen元空间Metaspace内存位置堆内存本地内存Native Memory大小固定吗是-XX:MaxPermSize否动态增长默认无上限容易 OOM 的场景类加载过多、大量动态代理、大量反射类加载非常多时也会耗尽系统虚拟内存GC 回收Full GC 时回收Metaspace Full GC调优参数-XX:PermSize -XX:MaxPermSize-XX:MetaspaceSize -XX:MaxMetaspaceSize推荐调优参数生产环境常见-XX:MetaspaceSize256m# 初始触发 Full GC 的阈值不是分配大小-XX:MaxMetaspaceSize512m# 最大元空间大小建议设置上限防止耗尽物理内存5. 方法区 / 元空间 OOM 的常见场景真实案例大量动态代理 / CGLIB / JDK ProxySpring AOP、MyBatis 动态 mapper大量反射如 JSON 框架大量使用反射大量类加载OSGi、插件系统、热部署系统大量 JSP 编译Tomcat 动态编译 JSPGroovy / Scala 等动态语言特性解决思路增大 Metaspace 大小-XX:MaxMetaspaceSize优化代码减少不必要的类加载使用类加载隔离如 tomcat 的 WebappClassLoader6. 总结一句话记住方法区方法区是存放已被加载的类元数据类结构、方法字节码、运行时常量池等的地方。JDK 6及之前叫永久代在堆里固定大小JDK 8及之后叫元空间在本地内存动态扩展字符串常量池和 static 变量在 JDK7 已经移到普通堆如果你现在想继续深入可以告诉我你想重点看哪个方向运行时常量池的详细解析过程intern() 方法底层实现类加载机制与方法区的关系元空间 OOM 真实案例分析方法区与堆、栈的对比图随时说
全网最全 10个降AI率网站测评:专科生必备的降AI率工具推荐 在当前的学术写作环境中,AI生成内容(AIGC)已经成为高校和科研机构重点关注的问题。对于专科生而言,如何有效降低论文中的AI痕迹、提升原创性,同时确保语义通顺、逻辑清晰,是撰写高质量论文的关键步骤。AI降… 2026/7/10 9:38:36
AI+编程实战:高效撰写高质量网络小说全指南 在网络文学高速发展的当下,创作者既要保证内容质量,又要应对高频更新的需求,传统创作模式中的思路枯竭、卡文、效率低下等问题日益突出。而AI技术与编程的结合,为网络小说创作提供了全新解决方案——无需复杂的底层开发࿰… 2026/7/11 16:39:09
10大AIGC工具实测:免费版vs付费版功能差异 �� 10大降AIGC平台核心对比速览 排名 工具名称 降AIGC效率 适用场景 免费/付费 1 askpaper ⭐⭐⭐⭐⭐ 学术论文精准降AI 付费 2 秒篇 ⭐⭐⭐⭐⭐ 快速降AIGC降重 付费 3 Aibiye ⭐⭐⭐⭐ 多学科论文降AI 付费 4 Aicheck ⭐⭐⭐⭐… 2026/7/11 9:14:36
微信聊天记录永久保存终极指南:免费开源工具让珍贵对话永不丢失 微信聊天记录永久保存终极指南:免费开源工具让珍贵对话永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending… 2026/7/11 18:55:08
STM32F439ZG GPIO上拉下拉配置与DTH-08传感器接口设计 1. 项目背景与核心需求在嵌入式系统设计中,信号的上拉和下拉配置是确保电路稳定工作的基础操作。STM32F439ZG作为一款高性能ARM Cortex-M4微控制器,其GPIO模块内置了灵活的上拉/下拉电阻配置功能。而DTH-08作为常见的数字温湿度传感器模块,其… 2026/7/11 18:51:08
6个改变硕博论文写作的信息工具与实操方法 1. 这不是“资源分享”,而是学术写作中真实踩出来的信息高速路 你写论文时发现了哪些非常神的网站?——这句话我第一次在知乎看到时,正卡在第三章文献综述的第17次改稿上。参考文献格式调了5遍,DOI链接点开404了3次,导… 2026/7/11 18:51:08
Midjourney企业级部署方案首度公开(支持私有化提示词库、团队权限分级、输出水印溯源),仅限前200名技术负责人申请白名单 更多请点击: https://codechina.net 第一章:Midjourney企业级部署方案全景概览 Midjourney作为生成式AI图像创作的代表性工具,其原生SaaS服务未提供私有化部署能力。企业级落地需通过合规、可控、可审计的技术路径实现能力复用与数据主权保… 2026/7/11 18:49:07
Tab补全不准=代码隐患!从AST解析层揭秘Cursor如何动态构建补全候选池(含TypeScript泛型补全源码级分析) 更多请点击: https://kaifayun.com 第一章:Tab补全不准代码隐患!从AST解析层揭秘Cursor如何动态构建补全候选池(含TypeScript泛型补全源码级分析) 当开发者按下 Tab 键却得到与上下文类型不匹配的补全项时,… 2026/7/11 18:49:07
7个技巧掌握Windows风扇控制:FanControl深度技术解析 7个技巧掌握Windows风扇控制:FanControl深度技术解析 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/… 2026/7/11 18:49:07
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/11 14:53:30
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/11 12:30:52
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/11 15:29:59