深入理解Java虚拟机系列

01_JVM初识

02_JVM类加载子系统

03_JVM运行时数据区初识

04_深入JVM与垃圾回收机制

JVM初识

  • 深入理解Java虚拟机系列
  • JVM简介
    • 1.JVM的位置
    • 2.一些常见的JVM
    • 3.Android虚拟机 DVM
    • 4.JVM类加载机制
      • 4.1.java代码执行流程
      • 4.2.栈的指令集架构和寄存器的指令集架构
      • 4.3.jvm生命周期
        • 4.3.1.启动
        • 4.3.2.执行
        • 4.3.3.退出

JVM简介

1.JVM的位置

2.一些常见的JVM

使用JIT(编译器)能提升效率,但是程序刚运行时,因为要翻译成机器指令,加载到缓存会卡顿,暂停一下。

解释器和JIT可以理解为步行和乘公交车。解释器步行上班,JIT乘公交车上班(需要等公交,转车的时候等待,但是速度快)。

两个搭配使用,一会步行一会公交。

  • SUN Classic

    世界上第一款商用Java虚拟机,这款虚拟机只提供解释器,要想使用JIT编译器,需要使用外挂。但是一旦使用JIT,解释器就不再工作。解释器和编译器不能配合工作。

  • Exact VM

    编译器和解释器混合工作模式,后来都是这样

  • HotSpot VM :HotSpot指热点代码探测技术

  • BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一

  • IBM J9

  • Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;

  • Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster Anywhere.最可能替代HotSpot的产品

3.Android虚拟机 DVM

  • 谷歌开发,基于Android,在2.2中提供了JIT
  • 只能称作虚拟机 不能称为java虚拟机,他没有遵循Java虚拟机规范
  • 基于寄存器架构,效率高,但是跟硬件耦合度比较高
  • 不能直接执行class文件,执行的是dex文件
  • 5.0使用支持提前编译的ART VM替换Dalvik VM

4.JVM类加载机制

类加载:加载–>链接–>初始化

JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化

4.1.java代码执行流程

java程序–(编译)–>字节码文件–(解释执行)–>操作系统(Win,Linux,Mac JVM)

4.2.栈的指令集架构和寄存器的指令集架构

由于跨平台的设计,java的指令都是根据栈来设计的,不同平台CPU架构不同,所以不能设计为基于寄存器的
栈:跨平台性、指令集小、指令多;执行性比寄存器差
寄存器:指令少

4.3.jvm生命周期

4.3.1.启动

通过引导类加载器(bootstrap classloader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的.

4.3.2.执行

  • 一个运行中的java虚拟机有着一个清晰的任务:执行Java程序;
  • 程序开始执行的时候他才运行,程序结束时他就停止;
  • 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。

4.3.3.退出

  • 程序正常执行结束
  • 程序异常或错误而异常终止
  • 操作系统错误导致终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作
  • 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况

深入理解Java虚拟机——01_JVM初识相关推荐

  1. 深入理解java虚拟机之类加载机制

    回顾我们<深入理解java虚拟机之初识JVM>,我们了解了类加载的过程,我们知道了类加载的生命周期有以下七个阶段:加载.验证.准备.解析.初始化.使用.卸载.其中解析和初始化交换顺序可以实 ...

  2. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  3. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  4. JAVA好书之《深入理解Java虚拟机》

    最近打算做好现有工作的前提下,扎实一下自己专业的技术知识,并将相关的经典书也记录一下.今天看了一些JVM相关的知识,这里面的经典是<深入理解Java虚拟机>,适合有点基础又想深入理解其中原 ...

  5. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...

    虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机-如何利用 Visual ...

  6. 深入理解 Java 虚拟机 - 你了解 GC 算法原理吗

    来自:好好学Java 虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机- ...

  7. 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析

    来自:好好学java 话不多说,今天就分析一下一些常用的Java虚拟机的参数设置,以及如何更好的使用! 1 JVM参数简介 首先想说的是其实这些参数我们并不是陌生的,在平时的开发和使用中经常都会遇到, ...

  8. 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析

    来自:好好学java 这篇文章主要介绍Java内存区域,也是作为Java虚拟机的一些最基本的知识,理解了这些知识之后,才能更好的进行Jvm调优或者更加深入的学习,本来这些知识是晦涩难懂的,所以希望能够 ...

  9. 深入理解java虚拟机之类文件结构以及加载

    我们都知道,java是一种平台无关的语言.java代码通过java编译器(如javac等),将.java文件编译成字节码,也就是.class文件.字节码是运行在jvm虚拟机之上的.而不同的平台则 有不 ...

最新文章

  1. python 关闭exe程序进程
  2. PHP从入门到跑路(二),基础语法,数据库操作
  3. C# TreeNode的使用方法
  4. 二维与三维之间的桥梁——点云
  5. 【C语言】计算N名同学的某门功课的平均成绩
  6. tomcat——轻量级中间件学习
  7. C++11 Unicode 支持
  8. php数组排序语言,php数组排序函数有哪些
  9. 一个白学家眼里的 WebAssembly
  10. C++ 仿QQ聊天程序 QQ 聊天室 源码
  11. 中文版IE7for XP SP2下载地址
  12. 云直播丁云鹏:最可怕的,是你低估生活的残酷
  13. 移动硬盘参数错误无法访问数据恢复方法
  14. 常用icon以及color颜色RGB值和对应颜色效果图
  15. C++ 0xc0000417 错误
  16. 详解 P沟道mos管与N沟道mos管
  17. 基于Matlab的故障检测的核PCA轮廓图
  18. 距离矢量(D-V)和链路状态(LS)的区别(转)
  19. 电子油门踏板/刹车踏板位置传感器
  20. c语言编译数学公式器,公式编辑器 - 数学公式在线编辑器 - MathEditor

热门文章

  1. abs、fabc、acos、double输入输出
  2. java中acos是什么意思_Java acos()方法
  3. 计算机建筑装饰设计入门知识总结,计算机技术在建筑装饰设计中的应用(7页)-原创力文档...
  4. 华为如做面板,真能超越三星么?
  5. 为什么说HTC U11选择百度DuerOS是最聪明的做法
  6. Java——类的应用(一)
  7. java根据手机号获取微信信息_Java实现的微信公众号获取微信用户信息示例
  8. 黑苹果 或者 Mac 因 mds资源占用过高,导致频繁死机
  9. 华为原厂预装系统出厂系统全系列恢复镜像安装
  10. 达人评测 i3 1115g4和i5 8265u选哪个好