尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

3. JVM 运行时数据区

3. JVM 运行时数据区
📅 发布时间:2026/6/18 20:28:29

本文内容基于个人对特定技术的理解和实践,或为对相关技术内容的整理与分享。请读者批判性阅读,如有疏漏或不准确之处,恳请斧正。

接续 2.JVM的类加载机制

类被加载到内存后,会保存在方法区或元空间中,根据JVM的划分,这部分内存归属于为线程共享的内存空间。
以下JVM内存空间是按照JVM Spec 中线程访问的规则进行划分(直接内存不属于JVM Spec):
image

线程共享的内存区域

  1. 堆内存
    创建的对象和数组一般分配在堆内存中,所以在多线程下访问对象的时候需要确保线程安全。堆内存设置为动态的,其空间是由GC进行处理的,为对象分配内存时,如果堆内存占用满了,并且GC还无法收回需要的空间,就会触发OOM。
  2. 方法区/元空间
    其中存储着每个类的结构,例如运行时常量池、字段和方法数据以及方法和构造函数代码。JIT compiled code 也是该区域的一个重要内容。这个区域可以选择是否为动态大小以及是否可以被垃圾回收(针对常量池的回收和对类型的卸载)。在逻辑上方法区与堆的性质是一样的,如果内存空间不足以分配,也会触发OOM。
  3. 堆外内存
    包含直接内存以及JVM使用的内存(例如 元空间),可以避免JVM管理、回收对象所造成的资源、性能的浪费。避免了数据在Java堆和操作系统本地缓冲区之间的来回复制,提高了I/O效率(即零拷贝)。如果堆外内存不足以支持JVM的分配,也会触发OOM。

线程私有的内存区域

  1. 程序计数器
    每个线程持有一份私有的,在JVM 中保存着当前线程正在执行的字节码的地址(执行本地方法时为空),宽度足够支撑当前平台所有的指令,
  2. 虚拟机栈
    每个线程持有一份虚拟机栈,由多个栈帧构成。执行方法时,会为该方法创建一个栈帧并压入栈中。栈帧是方法运行所需数据的结构化表示。

image

栈帧的结构和大小在编译时确定,其中动态链接就是触发类加载的一个条件,当动态链接转换为具体方法时,没有找到对应的类,就会触发加载。

相关新闻

  • 软工学习日志
  • 修电脑不求人:AI智能修复电脑工具的体验分享
  • Xcode上编译调试ffmpeg - 详解

最新新闻

  • 10分钟搞定ESP32开发环境:Arduino ESP32终极安装指南
  • 不平衡数据处理三层次实战:数据/算法/评估全链路方案
  • 2026年广州展厅设计公司排名:基于性价比与综合服务能力分类 - 信息热点
  • 重庆托福培训哪家强?实地验证搭配免费试听 - 晴光转树
  • ComfyUI_smZNodes:5大核心技术突破实现跨平台AI绘画一致性解决方案
  • 避雷!重庆日语学习者挑选培训机构看资质存证 - 晚香时候

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号