1.初步认识JVM -- JVM序列

1.JVM概念

    JVM是java Virtual Machine的简称。也称为Java虚拟机。

    虚拟机:通过软件模拟具有完整硬件功能的运行在一个完全隔离环境的完整计算机系统。VMWare、Visual Box、JVM

    VMWare、Visual Box 都是模拟物理CPU的指令集。而JVM是软件模拟Java字节码的指令集

 2.JVM发展历史

    96年SUN JDK 1.0 class VMWare、Visual

    97年JDK 1.1:具有AWT、内部类、JDBC、RMI、反射

    98年JDK 1.2:有JIT解析器、精确内存管理、提升GC性能

    2000年JDK 1.3:Hotspot发布默认的虚拟机

    2002年JDK 1.4:VM退出

    2004年JDK 1.5:具有泛型、注解、装箱、枚举、可变长的参数、foreach循环等

    JDK 1.6:具有脚本语言支持、JDBC 4.0

    JDK 1.7:延时推出,G1,动态语言增强、64位系统中的压缩指针、NIO 2.0

    2014 JDK 1.8:lambda表达式、语法增强、java类型增强

    2016 JDK1.9:模块化

 3.JVM种类

    KVM:用于手机系统;

    Hotspot:设备上建立统一的JAVA的接口

    IBM J9 VM:IBM内部使用

    apache harmony:兼容JDK1.5和JDK1.6

    Hotspot、JRockit,JRockit优点移植到Hotspot,会逐渐放弃JRockit。

 4.JAVA语言规范

    主要在于:语法、变量、类型、文法的定义。什么是java语言。

 5.JVM规范

    class文件类型、运行时数据、帧栈、虚拟机启动以及其指令集。什么是JVM。

    java和JVM是相对独立的

        只要符合JVM规范的就可以运行在JVM上,比如scala跟java规范是不一样的但是都可以运行在JVM上。

        二进制:         00000101 

        原码: 00000101            10000101    //0为正数,1为负数

        反码: 01111010            11111010    //原码基础上符号位不变,其他位取反

        补码: 01111011            11111011    //在反码基础上符号位不变加1

        注意:使用补码可以直接相加减加快计算提升性能。符号位参与计算。

        

        IEEE 754 :s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmmm

        e全0附加位为0,负责为1;

        s*m*2^(e-127)

    

    JVM需要对Java library提供一下支持:

        反射、类装载、初始化类以及接口、安全相关、多线程、弱引用。

    JVM的编译

        反编译看源码(这里不做介绍)

标注:本文是经由本人学习炼数成金JVM课程的笔记。

原文地址:https://www.cnblogs.com/luoliang/p/4612910.html