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

做物流和供应链网站西安今天刚刚发生的新闻

做物流和供应链网站,西安今天刚刚发生的新闻,网站建设学什么的,网站开发 动易JVM入门介绍 为什么学习JVM 岗位要求 解决工作中遇到的问题 性能调优 真实案例 导出超大文件,系统崩溃从数据库中查询超大量数据出错消费者消费来不及导致系统崩溃Mq消息队列接受消息导致的内存泄漏业务高峰期系统失去响应 初识JVM 什么是JVM? JV…

JVM入门介绍

为什么学习JVM

岗位要求

在这里插入图片描述

在这里插入图片描述

解决工作中遇到的问题

在这里插入图片描述

在这里插入图片描述

性能调优

真实案例

  • 导出超大文件,系统崩溃
  • 从数据库中查询超大量数据出错
  • 消费者消费来不及导致系统崩溃
  • Mq消息队列接受消息导致的内存泄漏
  • 业务高峰期系统失去响应

初识JVM

什么是JVM?

JVM全称是Java Virtual Machine,即Java虚拟机。

JVM本质上是一个程序,它的职责是运行Java字节码文件(.class),将字节码转换为机器码,机器码就可以交给机器运行

在这里插入图片描述

  • 源代码文件是.java,使用javac编译(javac是Java编译器的前端部分,这个过程主要是进行语法检查,不涉及性能优化),变成Java字节码文件.class,之后JVM将.class文件解释为机器码。
  • 通过不同平台上的不同JVM将字节码文件解释成对应平台的机器码,能够让Java源代码“一次编译,到处运行”。

JVM的功能?

  • 解释和运行
    • 对字节码文件中的指令,实时的解释成机器码,让计算机执行
  • 内存管理
    • 自动为对象、方法等分配内存
    • 自动的垃圾回收机制,回收不再使用的对象
  • 即时编译
    • 对热点代码进行优化,提升执行效率
Java为什么比C、C++慢

在这里插入图片描述

  • Java是一门解释型语言(或者说是半编译,半解释型语言)。Java通过编译器javac先将源程序编译成与平台无关的Java字节码文件(.class),再由JVM解释执行字节码文件,从而做到平台无关。 但是,有利必有弊。对字节码的解释执行过程实质为:JVM先将字节码翻译为对应的机器指令,然后执行机器指令。很显然,这样经过解释执行,其执行速度必然不如直接执行二进制字节码文件。
  • 相比于Java,C/C++少了解释的过程,所以效率更高,但是不具有跨平台特性。

在这里插入图片描述

即时编译
作用

JVM的一个重要功能是即时编译(Just in time、JIT),即时编译就是为了优化Java的性能,让其性能接近C、C++,甚至在特定场景实现超越

如何实现

当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。然后JIT会把部分“热点代码”编译成本地机器相关的机器码,并进行优化,然后再把编译后的机器码缓存入内存,以备下次使用(这样可以省略解释步骤,提高性能)。

在这里插入图片描述

当 JVM 执行代码时,它并不是立即开始编译代码的。如果这段代码本身在将来只会被执行一次,那么从本质上看,编译就是在浪费精力。因为将代码翻译成 java 字节码相对于编译这段代码并执行代码来说,要快很多。反之,如果一段代码频繁的调用方法,或是一个循环,也就是这段代码被多次执行,那么编译就非常值得了。因此,编译器具有的这种权衡能力会首先执行解释后的代码,然后再去分辨哪些方法会被频繁调用来保证其本身的编译。Hot Spot VM 采用了 JIT compile 技术,将运行频率很高的字节码直接编译为机器指令执行以提高性能,所以当字节码被 JIT 编译为机器码的时候,要说它是编译执行的也可以。

总结一下:即时编译是指JVM在解释字节码文件的时候,如果发现了出现频率很高的代码(热点代码),就会直接将这部分代码编译成机器码然后写入内存中以方便之后调用。这就是一个性能上的优化了。

常用JVM有哪些

在这里插入图片描述

  • HotSpot是最广泛的虚拟机(JDK自带),对Java的意义非常重大。但是闭源,无法对源代码进行修改

在这里插入图片描述

在这里插入图片描述

  • GraalVM:性能高、功能强(HotSpot增强版本)
  • 龙井:性能高、修复了很多OpenJDK的bug,更安全

如果想要开发一款虚拟机的话,需要遵从一定的规范

在这里插入图片描述

JVM的组成

在这里插入图片描述

  • 类加载器Classloader:加载class字节码文件的内容到内存中,需要准备一块内存空间来存储类和接口
  • 运行时数据区域(JVM管理的内存):负责管理JVM使用到的内存,如创建对象、销毁对象
  • 执行引擎(即时编译器、解释器、垃圾回收器等):将字节码文件中的指令解释成机器码,同时使用JIT优化性能,如果有的对象不再使用,使用垃圾回收器来回收对象
  • 本地接口(本地已经编译的方法比如虚拟机中提供的c/c++方法)
学习重点

重点学习:类加载器、运行时数据区域、垃圾回收器、即时编译器

了解即可:解释器和本地接口是JVM的底层源码部分,程序员无法进行修改,如果有兴趣再去了解。

文章说明

该文章是本人学习 黑马程序员 的学习笔记,文章中大部分内容来源于 黑马程序员 的视频黑马程序员JVM虚拟机入门到实战全套视频教程,java大厂面试必会的jvm一套搞定(丰富的实战案例及最热面试题),也有部分内容来自于自己的思考,发布文章是想帮助其他学习的人更方便地整理自己的笔记或者直接通过文章学习相关知识,如有侵权请联系删除,最后对 黑马程序员 的优质课程表示感谢。

http://www.zhongyajixie.com/news/4699.html

相关文章:

  • 湖南+网站建设百度爱采购服务商查询
  • 网站界面用什么做的seo排名优化有哪些
  • 深圳网站制作880简述seo对各类网站的作用
  • 网站建设目的确定百度新站关键词排名
  • 计算机专业的会学怎么做网站吗全网霸屏推广系统
  • 在南海建设工程交易中心网站百度app安卓版下载
  • 个人网站备案费用网络舆情的网站
  • 网站开发工程全球搜索引擎排名2022
  • 展示型外贸网站建设百度导航下载2021最新版
  • phpcms仿站网址查询注册信息查询
  • 湛江网站建设与网页seo网站课程
  • 定制商城网站建设哪有网页设计公司
  • 网站开发竞争对手分析哪个推广网站好
  • 怎么在网站上做抽奖seo搜索引擎推广什么意思
  • 怎么在网站上做签到品牌整合营销方案
  • 网站地址查询域名标题优化
  • 优质聊城做网站公司室内设计培训班学费一般多少
  • 北海涠洲岛旅游网站建设分析做网店自己怎么去推广
  • web前端模板下载网站西安seo培训机构
  • 商务科技网站建设成人电脑培训班办公软件
  • 大型公司网站建设目标文件外链生成网站
  • 潍坊尚呈网站建设公司 概况广东网站seo策划
  • 中江建设银行网站百度seo多久能优化关键词
  • 哪里有零基础网站建设教学服务兰州网络推广公司哪家好
  • discuz企业网站百度识图网页入口
  • 网站续费 多久免费网站推广网站不用下载
  • 新疆网站备案代理成都推广团队
  • 网站开发论坛系统优化的意义
  • 公众号网站怎么建厦门人才网个人会员
  • 网站title设置专业软文平台