当前位置: 首页 > news >正文

【Java】JVM 内存区域划分

【Java】如何保证集合的线程安全?
【Java】线程池优点 与传统方式对比

JVM 内存区域划分

文章目录

  • JVM 内存区域划分
    • 1. JVM 内存区域总体架构
    • 2. 线程共享区域详解
    • 3. 线程私有区域详解
    • 4. JVM 内存区域功能对比
    • 5. 内存区域交互关系
    • 6. JDK 版本内存区域演进
      • 线程共享区域:
      • 线程私有区域:
      • 重要特点:

1. JVM 内存区域总体架构

JVM内存区域
堆内存详细结构
方法区演进
线程共享区域
运行时数据区
线程私有区域
方法区 Method Area
堆内存 Heap
程序计数器 PC Register
虚拟机栈 JVM Stack
本地方法栈 Native Method Stack
年轻代 Young Generation
Eden 区
Survivor 区
From Survivor
To Survivor
老年代 Old Generation
JDK 1.7: 永久代 PermGen
JDK 1.8+: 元空间 Metaspace

2. 线程共享区域详解

堆内存结构
线程共享区域
Eden 区: 80%
Young Generation
Survivor 区: 20%
From: 10%
To: 10%
长期存活对象
Old Generation
大对象直接进入
存储对象实例
堆内存 Heap
GC 主要管理区域
所有线程共享
存储类信息
方法区 Method Area
常量池
静态变量
JIT 编译代码
类版本/字段/方法信息
运行时常量池
字符串常量池

3. 线程私有区域详解

栈帧生命周期
线程私有区域
创建栈帧
方法调用
栈帧入栈
执行方法
栈帧出栈
方法结束
当前线程执行的字节码行号
程序计数器
PC Register
唯一没有OOM的区域
线程切换时保存执行位置
栈帧 Stack Frame
虚拟机栈
JVM Stack
局部变量表 Local Variables
操作数栈 Operand Stack
动态链接 Dynamic Linking
方法返回地址 Return Address
为Native方法服务
本地方法栈
Native Method Stack
与虚拟机栈类似

4. JVM 内存区域功能对比

JVM内存区域功能表
是否线程共享
内存区域
是否GC管理
可能异常
存储内容
线程私有
程序计数器
当前指令地址
线程私有
虚拟机栈
StackOverflowError
OutOfMemoryError
栈帧/局部变量
线程私有
本地方法栈
StackOverflowError
OutOfMemoryError
Native方法信息
线程共享
堆内存
OutOfMemoryError
对象实例/数组
线程共享
方法区
OutOfMemoryError
类信息/常量/静态变量

5. 内存区域交互关系

对象创建流程
JVM内存交互
检查类加载
new 指令
分配内存
内存空间初始化
对象设置
执行init方法
方法区
存储类信息
类加载子系统
运行时常量池
虚拟机栈
方法执行
执行引擎
程序计数器
指令定位
堆内存
对象实例存储
创建对象
局部变量表
对象引用
本地方法栈
Native方法执行
本地方法接口
垃圾收集器

6. JDK 版本内存区域演进

在这里插入图片描述

线程共享区域:

  • 堆(Heap):对象实例存储,GC主要区域
  • 方法区(Method Area):类信息、常量、静态变量
  • 运行时常量池:类和接口的常量

线程私有区域:

  • 程序计数器(PC Register):当前指令地址
  • 虚拟机栈(JVM Stack):Java方法执行
  • 本地方法栈(Native Method Stack):Native方法执行

重要特点:

  1. 是最大的内存区域,被所有线程共享
  2. 程序计数器是唯一不会发生OOM的区域
  3. 虚拟机栈本地方法栈可能发生StackOverflowError
  4. JDK 8+ 使用元空间替代永久代
  5. 所有区域都可能发生OutOfMemoryError(除程序计数器)

这些内存区域共同协作,支撑Java程序的运行,每个区域都有其特定的职责和生命周期管理机制。

http://www.dtcms.com/a/569020.html

相关文章:

  • 上海广告公司网站制作wordpress 防止爆破插件
  • SSM基于HTML5的环保公益网站d4sf1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 23.目标检测基础
  • 详解JDK21新特性【虚拟线程】
  • 简单但好用:4种Selenium截图方法
  • 实验室安全教育与管理平台学习记录(九)消防安全
  • CS336笔记2-Architectures,Hyperparameters
  • 解决leetcode第3734题大于目标字符串的最小字典序回文排列
  • mysql数据做彩票网站网站建设合作合同模板下载
  • 抖音很火的多弹窗系统源码 多用户版 附教程
  • EtherNet/IP转 EtherCAT 物联网网关实现汇川PLC与施耐德伺服数据交互
  • 个人网站空间网站建设步骤详解视频
  • 【前端】js写十种排序算法(未完待续…)
  • c实践复建运动
  • io_uring:Linux 上的高性能异步 I/O
  • TPP热蛋白组分析:样本全覆盖-温度梯度设置指南,精准捕获作用靶点
  • Oracle dgbroker常规命令管理简介
  • PsLoggedOn(7.17):谁在登录?多会话取证与审计
  • 深圳网站美化美容培训东莞网站建设
  • 网站开发流程主要分成什么wordpress 文艺小清新
  • 【Java8新特性】Stream 流深度实战:创建 /filter/map/collect 常用操作 + 惰性求值原理解析 + 并行安全避坑
  • 【STM32】智能排队控制系统
  • AISaaS出海工具整理
  • 电商网站如何做精细化运营dw软件下载官方免费下载
  • 在线教程丨端侧TTS新SOTA!NeuTTS-Air基于0.5B模型实现3秒音频克隆
  • 测试开发话题10---自动化测试常用函数(2)
  • Auto CAD二次开发——镜像图形对象
  • 软考 关于23种设计模式
  • golang 网站开发 教程网站建设公司如何规避风险
  • 建设电子商务网站论文网站开发核心技术