你真的懂JVM嘛之第一篇JVM概述

目录

一、前言

1. 目的

2. 位置

二、编程语言热度排行榜

三、Java的跨平台性

四、JVM跨语言的平台

五、JVM的整体结构

六、Java代码的执行流程

七、JVM的结构模型

八、JVM的生命周期

九、JVM参考书籍


一、前言

1. 目的

学习一个技术最先开始了解的应该是它的目的,它会给我们带来什么?

作为Java选手,你是否遇到以下问题?

  • 运行着的线上系统突然卡死崩溃,甚至直接出现OOM;
  • 对于线上JVM GC问题,无从下手;
  • 对于新项目是否一股脑的选择G1垃圾收集器,采用默认的JVM参数;
  • 面试期间,面试官问如何解决OOM、GC问题,阁下又该如何应对?

掌握JVM可以进行系统性能调优排除线上bug。(当然还可以很好的应付面试)

2. 位置

JVM在整个计算机系统中所处位置:

        我们知道高级编程语言,要在计算机上运行,需要将先将其转换为字节码文件,然后通过JVM解释/编译为平台的机器指令执行。

二、编程语言热度排行榜

TIOBE官网:https://www.tiobe.com/tiobe.index/

        其实2020年之前,Java是稳居第一第二的位置,主要是Java的生态圈太完善了,它不仅仅是一门编程语言,已经演变成了一种文化。

三、Java的跨平台性

        一次编译,随处运行。

四、JVM跨语言的平台

        所以说:Java不是最强大的编程语言,但是JVM一定是最强大的虚拟机。

        任何一门编程语言,在遵循字节码文件规范后,都可以被JVM解释运行。

五、JVM的整体结构

        后续所有章节也都是围绕着这几部分展开:类加载器子系统、运行时数据区、执行引擎。

六、Java代码的执行流程

七、JVM的结构模型

Java编译器输入的指令流的架构类型主要有以下两种:

  1. 基于栈式的指令集架构的特点:
  •   设计和实现更简单,适用于资源受限的系统;
  •   避开了寄存器的分配难题:使用零地址指令方式分配。(零地址指令是没有地址只有操作数,一地址指令是比如3为操作数,2为他的地址只有一个地址,二地址指令就是一个操作数两个地址)因为栈只需要执行入栈出栈操作,只对栈顶数据进行操作所以不需要地址。
  • 不需要硬件支持,可移植性更好,更好地实现跨平台。 
  • 执行性能比寄存器差。

     2. 基于寄存器架构的特点

缺点:指令集架构完全依赖于硬件,可移植性差。

优点:1. 性能优秀,效率高。(因为他是直接在缓冲区中运行)2.花费更少的指令完成操作。

Hotspot虚拟机其实基于栈的操作,Java也是每执行一个方法就相当于将方法压入栈,执行完之后就将其弹出。

下面通过代码演示一下,基于栈式的指令集架构的特点:

指令是八位的。

加载到内存中,字节码文件如何生成相应的指令,进行字节码反编译

其实直接在编译阶段将2+3变成了5,存储到istore_1(1是栈的索引位置)中

针对这种情况重新进行编译:

基于寄存器的指令流:

mov eax,2 //将eax寄存器的值设为1
add eax,3 //使eax寄存器的值加3

八、JVM的生命周期

九、JVM参考书籍

官方推荐:

个人比较推荐《深入理解Java虚拟机》这本书,但是建议搭配着视频一起品尝,否则可能会比较枯燥难懂。(需要电子版可以评论区留言

参考:

1. b站:尚硅谷宋红康JVM全套教程(详解java虚拟机)01-JVM内存与垃圾回收篇概述_哔哩哔哩_bilibili

2. 第一章 JVM和Java体系架构_https://blog.csdn.net/sj15814963053/article/detail-CSDN博客

3. 【精选】JVM简介_jvm的作用_温JZ的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值