03-JVM-对象内存、执行引擎

news/2024/5/2 15:04:10/文章来源:https://blog.csdn.net/qq_42861526/article/details/126998348

一、创建对象的方式

  1. new、Xxx的静态方法、XXXBuilder/XXXFactory的静态方法
  2. Class的newInstance,只能调用空参构造器,权限必须是public
  3. Construct的newInstance,可以调用空参、带参的构造器,权限无要求
  4. Clone(),不调用构造器,但需要实现Cloneable接口,实现clone,默认浅拷贝
  5. 使用反序列化

二、创建对象的过程

  1. 判断对象对应类是否加载、链接、初始化
  2. 为对象分配内存(指针碰撞、空闲列表)
  3. 处理并发安全问题
    在这里插入图片描述
  4. 初始化分配到的内存
  5. 设置对象头
  6. 执行init方法进行初始化

三、对象结构

在这里插入图片描述

对象头

对象头主要包含元数据和类型指针

元数据

  1. 对象哈希值
  2. GC分代年龄
  3. 锁状态标志

类型指针:指向方法区中该对象的类元信息

四、执行引擎

将字节码指令解释/编译为对应平台的机器码

动态编译

简单来说就是将java代码编译成字节码文件,再由执行引擎动态的将字节码转换成机器码

解释器
特点:预热快,速度慢
逐行将字节码翻译成机器码

JIT编译器
特点:预热慢,速度快
将热点代码的机器码进行缓存,方便下次直接调用,但若一开始就使用JIT,由于缓存需要额外耗费时间和空间,速度反而要差于解释器,也会额外增加内存消耗

热点代码触发的两种方式

  1. 方法调用计数器:用来记录一段时间内方法的调用次数,超过这段时间若还没达到阈值则次数减半
  2. 回边计数器:记录一个方法内循环体的执行次数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

静态编译

直接将java文件编译成机器码,但这样做会带来两个问题:

  1. 违反了一次编译,到处运行的特点,因为编译出来的机器码只能在一种操作系统上使用
  2. 失去了动态编译的优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12918.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞吉外卖(16) - 新增菜品功能开发

文章目录需求分析数据模型dish表dis flaow表代码开发搭建框架新增dishFlavor实体类新增Mapper接口DishFlavorMapper新增业务接口DishFlavorService新增业务层实现类DishFlavorServiceImpl新增控制层DishController梳理交互过程编辑CategoryControoler下拉框功能测试导入DTO编写…

香橙派Orange Pi i96 初次使用遇到的坑和解决方法+附加c# iot .net 代码实例

香橙派Orange Pi i96这个主板是香橙派最便宜的一样主板,功能也不少,我觉得可以满足我的需求,如果可以用好的话,可以做很多东西,批量买也便宜,做出来的产品,定价也不用很高,符合效益 …

4计算机网络与信息安全——软件设计师

一、七层模型 内容: 习题: 局域网不能通过三层通信 二、网络技术标准与协议 一般分为4/5层(没有明确说明,了解主要几层即可) TCP协议: DHCP协议 DNS协议 递归直接回答,迭代刨根到底 三、网络类型与拓扑类型 计算机网络按不同…

一起Talk Android吧(第三百八十五回:数据绑定-DataBinding总结)

文章目录数据绑定使用方法7.单向数据绑8.双向数据绑定9.绑定事件演示结果使用总结各位看官们,大家好,上一回中咱们说的是数据绑定-DataBinding的例子,这一回中咱们继承介绍该例子。闲话休提,言归正转,让我们一起Talk Android吧&am…

线程池概念2

线程池类图 ExecutorService:是一个线程池最基本的接口,提供了提交任务,关闭线程池这些基本的方法。 ScheduledExecutorService:扩展接口,在基础线程池的功能上又新增了任务调度的功能,可以用来定时执行任务。 线程池状态 线程…

Devtools Console 面板输入了 1+1 ,浏览器内部发生了什么?

背景 新来的实习生妹子问了一个问题:「你看 Chrome 的 Devtools 调试工具,代码写一半还没运行下面就会提示输出结果,这个咋做到的?」 咋做的?对于 Devtools 的内部执行逻辑,咱不了解,但咱也不能…

WhatsApp和WhatsApp Business之间的区别

关键词:WhatsApp、WhatsApp Business WhatsApp 无疑是一款超级方便、免费且毫不费力的即时通讯应用程序。这就是庞大的用户群的原因。对于企业来说,它也是一个超级方便、免费且不费吹灰之力的即时通讯应用程序。特别是自从 WhatsApp 推出了 WhatsApp Bus…

《MySQL DBA封神打怪之路》专栏学习大纲

《MySQL DBA封神打怪之路》专栏学习大纲 文章目录《MySQL DBA封神打怪之路》专栏学习大纲1、作者介绍2、专栏介绍3、专栏部分文章截图3.1.所有文章一栏3.2.文章内容截图4、专栏大纲学习指南4.1对数据库的初步认识4.2.四种类型的SQL语句基本使用4.3.超丰富的多表联查案例4.4.事物…

消除笔去水印怎么做?教你怎么用这些消除笔软件

在网上看到好看的照片想要用作壁纸,但是上面有水印看起来不好看怎么办?我们可以用有消除笔的软件将图片水印去除,那么消除笔去水印怎么做呢?今天的这个教程分享给你们。方法一:借助“Styler”进行去水印操作 这是一款拥…

Echarts绘制geo地图属性设置大全(一)

1、Echarts版本 "echarts": "^5.3.3", 2、基础地图绘制&#xff08;以中国地图为例&#xff09; 绘制地图需要有用于绘制地理坐标系的数据&#xff0c;如示例使用的china.js <template><div ref"mapBar" class"map-class"&…

面试之HashMap

1.初始大小&#xff1a;HashMap默认初始大小是16&#xff0c;这个默认值是可以设置的&#xff0c;如果事先知道大概的数据量有多大&#xff0c;可以通过修改默认初始大小&#xff0c;减少动态扩容的次数&#xff0c;这样会大大提高HashMap的性能 2.动态扩容&#xff1a;最大 装…

兼容性测试包含哪几类呢?

兼容性测试包含哪几类呢? (1)浏览器方面 关于浏览器的兼容性测试&#xff0c;主要是检查页面的交互、元素和样式展示是否正常。我们都知道&#xff0c;目前市面上主流的浏览器非常多&#xff0c;像&#xff1a;360、搜狗、火狐等等。 在进行测试的时候&#xff0c;由于兼容性问…

2022出海东南亚:越南电商市场现状及网红营销特点

近几年&#xff0c;东南亚整体发展态势非常好&#xff0c;加上国内市场饱和&#xff0c;不少国内企业在计划出海或已经出海东南亚。作为东南亚第二大电商市场&#xff0c;越南自然也成了香饽饽&#xff0c;越南蓬勃发展的数字经济和电商领域&#xff0c;让其成为了卖家挖掘新商…

Vue 力导图d3js 实现

PowerBI 自定义组件推荐用D3JS 实现&#xff0c;实现一个PowerBI 的力导图组件&#xff0c;为调试方便&#xff0c;先用Vue 实现一个&#xff0c;然后再移植到PowerBI 中&#xff0c;话不多说&#xff0c;上效果&#xff1a; 体验入口 上代码是最好的老师&#xff1a; <t…

【easyExcel】后端将模板文件写入流供前端下载报错,easyexcel下载模板文件出错

目录事件起因环境和工具操作过程解决办法参考内容&#xff1a;结束语事件起因 报错内容&#xff08;我主要搜索的两个错误内容点&#xff09;&#xff1a; com.alibaba.excel.exception.ExcelGenerateException: Create workbook failure 和 Caused by: org.apache.poi.openx…

kingbaseES(人大金仓)数据库语法和常用函数 以及 踩坑记录

前言 最近公司弄了个新项目&#xff0c;数据库指定使用kingbase数据库 刚开始一看这名字都不知道这是啥数据库&#xff0c;后来百度一搜&#xff0c;看到中文名字就知道了。 虽然没用过&#xff0c;但那几个国产数据库也听说过 这不&#xff0c;刚开始用&#xff0c;语法都不熟…

概率统计·概率论的基本概念【条件概率】

条件概率 定义 条件概率与积事件的区别 条件概率——在A事件发生的前提下&#xff0c;发生B 积事件——AB同时发生 性质 **注意&#xff08;3&#xff09;要在B1&#xff0c;B2……是互斥事件 &#xff08;6&#xff09;用得多 纯乐&#xff0c;自己都说了&#xff08;6&…

数智赋能,美创助力绍兴市上虞区建设医共体管理平台

什么是医共体&#xff1f; 开展县域医共体建设是深化医改的重要步骤和制度创新&#xff0c;旨在通过医共体模式&#xff0c;推动医疗卫生服务供给侧结构性改革&#xff0c;调整优化医疗资源结构布局&#xff0c;促进医疗卫生工作重心下移和资源下沉&#xff0c;提升基层服务能力…

瑞吉外卖(14) - 上传文件功能开发

文章目录文件上传介绍文件上传代码实现查看效果新建CommonController类断点测试转存文件取消拦截器过滤LoginCheckFilter.java运行测试完善功能编写application.xml编写CommonController.java运行测试完善二级目录编写application.yml编写CommonControler.java测试成功文件上传…

使用streamstring实现格式化输入

目的&#xff1a;在windows系统写c项目&#xff0c;常用sscanf_s进行格式化输入。但是在ubuntu系统上发现sscanf_s不可用&#xff08;只有sscanf可用&#xff0c;但是它是c 99 的函数了&#xff09;。后面查阅知道&#xff0c;这个sscanf_s函数是微软专有的函数&#xff0c;不具…