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

JVM对象内存分配机制全解析

jvm创建对象的内存分配过程

在这里插入图片描述

1、逃逸对象在栈上分配

通过在栈上为对象分配内存,使对象占用的内存空间随着方法结束栈帧弹出而销毁,避免了GC垃圾收集器回收对象,减小GC的压力;

栈上分配内存依赖逃逸分析和标量替换。

逃逸分析

  • 分析对象的动态作用域
  • 逃逸:当一个对象在方法中被定义后,可能被外部对象所引用,比如方法返回了该对象,则该对象的作用域范围不确定,可能存在被其他对象访问
  • 没有逃逸:当对象在方法内使用,作用域仅在方法内部,比如实体对象入库完就结束了

标量替换

  • 通过逃逸分析确定对象不会被外部访问之后,会将对象在栈上创建,通过标量替换将对象进一步分解,将该对象的成员变量分解为方法的成员变量,在栈帧或者寄存器为这些代替的成员变量分配空间。
  • 启标量替换参数:-XX:+EliminateAllocations,JDK7之后默认开启
  • 标量与聚合量:标量不可被进一步分解的量,java的基本数据类型int、long以及reference类型是标量;聚合量是可分解的量,java的对象就是可被进一步分解的聚合量。
2、

相关文章:

  • PCB板高速飞拍检测系统 助力电子制造自动化领域
  • 如何导出和迁移离线 Conda 环境
  • Cisco Nexus93240接口带宽显示异常高故障- bug
  • 【目标检测】什么是目标检测?应用场景与基本流程
  • [持续集成]
  • 【案例】性能优化在持续集成与持续交付中的应用
  • element-ui使用el-button去掉focus,删除el-button的focus效果
  • 魔音音乐 5.0.2 | 无损下载 同步网易云歌单UI美观
  • 数据分析对比图表-雷达图全面指南
  • 纯视觉SOTA!华科小米推出ReCogDrive:结合VLM和强化学习的端到端自动驾驶框架
  • 数据库中间件ShardingSphere5
  • 高性能群集部署技术-Nginx+Tomcat负载均衡群集
  • Zephyr 开发进阶:设备树 DTS、板卡 BSP 与驱动模型全解析
  • C++11 GC Interface:从入门到精通
  • window显示驱动开发—使用状态刷新回调函数
  • C# WPF程序界面美化方法与详细步骤
  • wpf DataTemplate 宽度和控件宽度一样
  • 在小程序中实现上下左右拖动表格
  • git更改远端文件名称以及删除指定文件夹
  • Efficient Non-Local Transformer Block: 图像处理中的高效非局部注意力机制
  • 外贸做包装袋哪个网站好/百度识图在线
  • 济南制作网站的公司吗/今天最火的新闻头条
  • 合肥seo网站优化培训/网站提交收录
  • 太原自助模板建站/北京seo公司哪家好
  • 新公司董事长致辞做网站/东莞有限公司seo
  • seo网站优化方法/网络营销推广是做什么的