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

JVM

JVM内存模型(每个线程独立拥有,线程结束后销毁)

线程私有区

  • 程序计数器:记录当前线程字节码行号指示器,用于线程切换之后恢复执行位置。唯一不会抛出OutOfMemorryError区域
  • 虚拟机栈:每一个方法对应一个栈帧,方法执行入栈,方法结束出栈,包含局部变量表,操作数,方法出口等。递归出错会造成栈溢出,动态扩展无法申请到足够的空间内存溢出报错
  • 本地方法栈:用c,c++写的Native方法

线程共享区

  • 堆空间:JVM最大内存区域,存放对象实例和数组,GC回收核心区域,分为新生代,老生代
  • 元空间:代替之前的永生代,位于本地内存(为了避免永久代内存溢出,利用本地内存)。主要存储了一些元信息,静态变量,JIT编译之后的代码

JVM内存模型和JMM内存模型区别

  • JVM:解决内存如何存储的问题
  • JMM:定义多线程之间的共享变量的可见性,原子性,有序性规则,解决多线程并发问题

OOM溢出出现的位置

  • 虚拟机栈、本地方法栈:递归过深栈溢出,动态扩展内存不足OOM,JVM无法满足这个栈空间的扩容需求
  • Java堆:对象数量超过堆的最大容量
  • 元空间:类元素信息过多

JVM垃圾回收

判断对象已死

  • 引用计数法:有引用+1,没有-1,计数器为0判断为垃圾。但是无法解决循环引用的问题
  • 可达性分析:以GC Roots为起点,向下搜索所有引用,如果不可达就是可回收对象。
  • GC Roots包含的对象:虚拟机栈中引用对象,方法区中静态属性引用的对象,方法区中常量引用的对象,本地方法栈中native引用的对象

4中核心回收算法

  • 标记-清除
  • 标记复制
  • 标记-整理
  • 分代收集:前面三种算法的组合策略
http://www.jsqmd.com/news/87431/

相关文章:

  • MS/MS肽段测序
  • 终极指南:5分钟掌握TensorBoard专业配色技巧
  • 帝国cms调用文章内容 二开基本操作
  • MudBlazor文本字段布局优化:3种高效解决内边距异常问题的终极方案
  • 惠州精密无缝钢管急单?24h响应+1v1定制,7天交货!
  • 终极指南:如何用nerfstudio与Blender实现自动化3D建模
  • 3大实时通信技术深度对比:告别消息延迟的终极指南
  • 如何写一个可以识别图像数字的基于VIT大模型的简单代码?
  • Maven
  • 30分钟掌握Ocelot网关:从零搭建微服务API网关的完整指南
  • MudBlazor组件库布局优化实战指南:从间距失调到完美适配
  • Granite Docling 258M:重新定义文档智能处理的终极解决方案
  • 5分钟打造AI会议助手:基于ChatGLM3-6B的零代码企业级解决方案
  • GLM-4.6技术深度解析:200K上下文窗口与智能体工具调用的革命性突破
  • 安卓Utility V200.00.0000维修解锁工具
  • 行为型模式:观察者模式
  • 8、Ubuntu Unity桌面使用指南
  • 防腐涂料哪家生产厂家
  • 开源AI智能名片多商户商城系统中的标题引流策略研究
  • 16、Ubuntu 命令行使用全攻略
  • 企业即时通讯软件有哪些?(主流产品盘点) - 企业数字化观察家
  • 38、软件开发核心概念与技术解析
  • 17、Ubuntu Server使用与安装全面指南
  • AI绘画版权检测:从问题诊断到合规实践的全流程指南
  • arXiv LaTeX Cleaner 终极指南:一键清理你的论文代码
  • 25、深入探索Ubuntu社区:活动、团队与治理体系
  • 从“搅局”到“重构”:开源AI智能名片多商户商城小程序对电商生态的范式转型研究
  • MySQL内置函数
  • FlashAttention如何实现3-5倍LLM推理加速?KV缓存与增量解码深度解析
  • Dexed合成器终极指南:从零开始掌握经典DX7模拟