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

上海网站建设规划百度指数查询网

上海网站建设规划,百度指数查询网,wordpress断点续传,四川宜宾今天最新消息1.为什么要学习JVM? 未来在工作场景中,也许你会遇到以下场景:线上系统突然宕机,系统无法访问,甚至直接OOM;线上系统响应速度太慢,优化系统性能过程中发现CPU占用过高,原因也许是因为…

1.为什么要学习JVM?

  • 未来在工作场景中,也许你会遇到以下场景:
  • 线上系统突然宕机,系统无法访问,甚至直接OOM;
  • 线上系统响应速度太慢,优化系统性能过程中发现CPU占用过高,原因也许是因为JVM的 GC次数过于频繁;
  • 新项目上线,需要设置JVM的各种参数;

2.JDK\JRE\JVM

  • JDK:全称“Java Development Kit”Java开发工具包,提供javac编译器、jheap、jconsole等监控工具;
  • JRE:全称“Java Runtime Environment”Java运行环境,提供Class Library 核心类库 + JVM;
  • JVM:全称“Java Virtual Machine”Java虚拟机,用于运行Java应用程序;

3.Java程序执行过程

1.编译:通过javac命令,调用JDK编译器,将*.java源文件编译成*.class字节码文件。

2.执行:通过java命令,调用JVM虚拟机,执行*.class字节码文件

4.Java程序的跨平台

计算机平台是什么?

我们通常把CPU处理器与操作系统构成的系统架构,称为计算机平台。

现代的电子计算机是基于二进制设计实现,所以CPU仅能识别0与1这样的二进制信号。而计算机程序的本质就是0与1之间的不同组合产生的机器指令,交给CPU去执行。CPU为了能识别执行机器指令,就需要不同CPU架构和指令集来支持。不同的厂商,设计生产的CPU,CPU架构和指令集也是不同的。

常见的指令集主要分为:精简指令集(RISC)和复杂指令集(CISC)。

    • 复杂指令集(CISC):X86和X64两种CPU架构基于CISC复杂指令集,比如:Intel、AMD等厂商的CPU。
    • 精简指令集(RISC):ARM架构的CPU基于RISC精简指令集,比如:Compaq的Alpha、HP的PA-RISC、IBM的Power PC、Apple的M1。

在底层硬件及指令集之上,需要搭载不同的操作系统,用于支持不同的CPU指令集。例如:早期的MacOS操作系统只支持Power系列的CPU。最新的MacOS系统只能安装在M1芯片的CPU。

Java是一种跨平台的编程语言,主要是为了让相同的Java应用程序代码,不用做任何修改,可以在不同计算机系统平台上正常运行,兼容各种主流操作系统+CPU指令集。

跨平台的原因

实现跨平台的原因,主要有两个

1不同的平台,相同的源代码,编译的字节码是相同的,所以字节码文件可以在不同平台“通用”;

2不同的平台,执行字节码时,都需要各自的JVM虚拟机版本,用于将字节码翻译成当前平台可以执行的机器码指令

5.静态编译器

通过JDK提供的静态编译器,将Java源文件编译成字节码文件。

编译过程包括:

1词法分析:通过空格分隔出源代码中的单词、操作符、控制符等信息,将其形成token信息流,传递给语法解析器。

2语法分析:将token信息流按照Java语法规则,组装成一颗语法树

3语义分析:对语法树进行关键字使用、类型匹配、作用域等语法检查。

4字节码:当语义分析完成后,可以生成字节码。

6.字节码

当1个Java源文件被编译后,就会按照JVM规范和字节码定义,产生1个class字节码文件,文件内容由10个固定部分组成。

前4个字节非常特殊,红色框的cafe babe是詹姆斯定义的魔法数,它的作用是标志当前文件是一个字节码文件。当JVM在进行类加载的Load阶段时,如果没有识别到该标志,就说明文件不是字节码文件或已损坏,则无法进行加载。绿色框代表当前版本号,0x34的十进制为52,是JDK8的内部版本号,代表这个字节码文件基于JDK8编译。

剩余部分中的每个字节均代表一个字节码指令,由于每个指令的长度按照1个字节存储,所以每个指令被称为字节码(Bytecode),Java所有的字节码指令有200多个。

由于纯数字的字节码指令阅读比较困难,所以JVM在字节码指令的基础上设计了一套操作码助记符,使用特殊单词来代替对应的数字指令。

例如:

0x15 ILOAD:读取int类型的局部变量

0x36 ISTORE:保存int类型的局部变量

0x60 IADD:执行两个int类型的数值加法运算

0xbb NEW:创建对象

0xbc NEWARRAY:创建数组

0xac IRETURN:返回int类型结果

7.JVM执行方式

JVM执行方式

JVM以解释+编译混合模式,执行字节码文件。

1JVM的执行方式以解释执行为主。执行过程中,JVM将每个字节码文件中的每个指令,通过解释器转换成当前平台可以识别的机器码,然后交给CPU执行。

2为了提高执行效率,JVM还会在运行期间,JVM通过热点代码的统计分析,识别高频的方法调用,循环体、公共模块等,当超过阈值时,JVM会基于JIT 即时编译器(just-in-time compiler)将热点代码转换成机器码,直接交给CPU执行,提高执行效率。

a.Client 模式下默认阈值是 1500 次,在 Server 模式下是 10000次。

  • JVM解释器:程序执行的时候,解释器首先发挥作用,省去了编译器编译时间,加快程序的执行效率。
  • JIT编译器:在程序运行过程中,随着时间的推移,JIT开始慢慢发挥了作用,把热点代码编译成本地代码后,以后执行相同的代码,即可直接交给CPU执行,带来更高的执行效率。

机器在热机状态可以承受的负载要大于冷机状态(刚启动时 ),如果以热机状态时的流量进行切换,可能使处于冷机状态的服务器因无法承载流量而假死。所以,在生产环境中发布应用,应该以分批的方进行发布,根据机器数量划分成多个批次,每个批次的机器数大概占到整个集群的15%。

故障案例:某应用在线发布新版本,采用进行分批发布,发布总批数误填写成分为两批发布。如果是热机状态,正常情况下,集群中的一半的机器可以勉强支撑负载流量,但由于刚启动的JVM均是解释执行,还没有进行热点代码统计和JIT动态编译,导致机器启动之后,当前 1/2 发布成功的服务器马上全部宕机。

8.类加载器

字节码必须通过类加载器,通过加载、验证、解析等校验步骤,将字节码文件中的类,加载至JVM的中运行时数据区,才可以执行字节码。

9.垃圾收集器

JVM在运行期间,通过Garbage Collctor垃圾收集器,定期对运行时数据区进行垃圾对象的回收,从而实现了内存自动管理。

10.JVM组成结构

JVM由类加载器、运行时数据区、JVM解释器、JIT即时编译器、垃圾回收器、本地方法库等部分组成。

由类加载器完成字节码文件的加载验证和解析,存储至运行时数据区,并由执行引擎中的解释器,完成字节码到机器码的解释执行。同时进行热点代码的统计分析,调用JIT即时编译器将字节码直接编译成机器码,提高执行效率。JVM运行期间的方法调、数据对象统一存放至运行时数据区。

http://www.hkea.cn/news/788973/

相关文章:

  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些
  • 扬中做网站的公司seo虚拟外链
  • 永川集团网站建设免费网站seo诊断
  • 国外 上海网站建设网络营销推广方式案例
  • 24手表网站网络技术推广服务
  • 鞍山网站制作推广游戏推广员判几年
  • 360如何做网站优化网页设计制作软件
  • 金华网站建设电话电商运营主要负责什么
  • 百度的官方网站游戏推广工作好做吗
  • 著名的深圳网站建设网页快照
  • 政务网站建设要求快速排名软件哪个好
  • 自己网站怎么做优化色盲和色弱的区别
  • 苏州建网站公司seo网络推广培训班
  • 福清市建设局网站石家庄学院
  • 找考卷做要去哪个网站中国国家培训网官网查询
  • 软件系统开发的大概步骤优化网站标题名词解释
  • 院校网站建设模板建站平台
  • 淘宝网站内搜索引擎优化怎么做广告推广平台网站有哪些
  • 大片播放网站国外免费推广网站有哪些
  • flash网站cms排名sem优化软件
  • 申请完域名怎么做网站百度链接提交
  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名
  • 济宁网站建设seo抖音seo源码搭建
  • 茂名网站建设方案书简述seo和sem的区别
  • 江西网站做的好的企业文化百度指数在哪里看
  • 山东电商网站建设seo网站排名优化公司