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

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

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

在这里插入图片描述

1、逃逸对象在栈上分配

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

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

逃逸分析

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

标量替换

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

相关文章:

  • Springboot仿抖音app开发之Nacos 分布式服务与配置中心(进阶)
  • C/C++ 高频八股文面试题1000题(一)
  • 408第二季 - 组成原理 - 流水线
  • 开疆智能ModbusTCP转EtherCAT网关连接IVO编码器配置案例
  • Python 的内置函数 globals
  • [MSPM0开发]之九 MSPM0G3507的ADC
  • 全球首款5G-A人形机器人亮相,通信与AI融合进入新阶段
  • 展锐android13修改开机logo和开机图片
  • 阿里云申请ssl证书,同时需要绑定域名,下载nginx压缩包,nginx添加证书路径即可
  • java面试题03静态修饰类,属性,方法有什么特点?
  • Mac电脑 窗口分屏管理 Magnet Pro
  • 零基础入门PCB设计 一实践项目篇 第三章(STM32开发板原理图设计)
  • lingma(阿里云Ai)结合idea使用
  • Redis03
  • STM32[笔记]--开发环境的安装
  • 三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现
  • Python 中设置布尔值参数为 True 来启用验证
  • Rsync异地备份的使用方式
  • 网络编程简介与Netty实战:从入门到高性能Echo服务器
  • Node.js 在前端开发中的作用与 npm 的核心理解
  • FPGA基础 -- Verilog 的值变转储文件(VCD:Value Change Dump)
  • Spring Boot + MyBatis + Vue:全栈开发中的最佳实践
  • 压铸件超声波清洗设备有哪些常见的故障原因?
  • Android Kotlin 用法对比Java使用小结
  • 阿里云OSS对象云储存入门操作
  • 前端工程结构设计指南:如何让模块解耦、易维护、可拓展
  • 讯方“教学有方”平台获华为昇腾应用开发技术认证!
  • Linux系统时间不对导致mysql初始化失败:Data Dictionary initialization failed.(数据字典版本验证失败)
  • 【案例分享】如何用 DHTMLX Scheduler 构建灵活高效的资源调度系统?
  • Vue 比较两个数组对象,页面展示差异数据值