文章目录

  • JVM的概念
  • JVM的规范定义:jvm主要定义了二进制class文件和JVM指令集等


JVM的概念

1、 JVM 是Java Virtual Machine的简称,翻译为Java虚拟机。

2、虚拟机 ----- 指通过软件模拟的具有完成硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

3、常见的虚拟机有:

  • VMWare
  • Visual Box
  • JVM
    4、VMWare或者 Visual Box都是使用软件模拟物理CPU的指令集。
    5、JVM使用软件模拟Java字节码的指令集。

JVM的规范定义:jvm主要定义了二进制class文件和JVM指令集等

1、class文件格式
2、数字的内部表示和存储
3、returnAddress数据类型定义

  • 指向操作码的指针。不对应Java数据类型,不能在 运行时修改。Finally实现需要。
    4、定义PC
    5、堆
    6、栈
    7、方法区
    8、整数表达式(二进制)
  • 原码:第一位为符号位(0为正数,1为负数)
  • 反码: 符号位不动,原码取反。
  • 负数补码: 符号位不动,反码加1。
  • 正数补码: 和原码相同。
    示例:

    负数在计算机表现形式就是补码的形式了。
    在程序中打印整数的二进制表示:
int a = -6;
     for(int i = 0; i < 32; i ++){
         int t = (a & 0x80000000 >>> i) >>>(31-i);
         System.out.println(t);
     }

9、为什么要用补码?

1)能很好的对0进行表示:0既不是负数也不是正数,如果把0看做正数就是00000000,如果把0看做负数,补码后的结果也是00000000

vmmem是啥 vmm表示的是_Java


2)方便计算:如果是用补码表示整数,那么只要对应位置上的0和1相加就可以了。

vmmem是啥 vmm表示的是_JVM_02


10、浮点数(float 四个字节)的表示

  • 支持IEEE 754标准(二进制浮点数算数标准)
    1)s为1表示负数,0表示正数。
    2)e为指数8位
    3)m为尾数23位,如果e不全为0,实际尾数为24位。

    示例:
    因为e不全为0,附加位为1,所以m计算为20+0*2-1+1*2^-2+…后面都为0。单精度的-5就如下表示

    11、jvm中定义了一些特殊的方法
  • 类的初始化方法
  • 实例的初始化方法
    例如:java中没有声明一个类的构造函数,jvm会自动构造一个无参的构造方法。
    12、JVM指令集
  • 类型转化 ----------> l2i
  • 出栈入栈操作 -------> aload astore
  • 运算 ---------> iadd isub
  • l流程控制 --------> ifeq ifne
  • 函数调用----------> invokevirtual invokeinterface invokespecial invokestatic
    13、JVM需要对Java library提供以下支持
  • 反射 java.lang.reflect
  • ClassLoader
  • 初始化class 和interface
  • 安全相关 java.security
  • 多线程
  • 弱引用
    14、JVM的编译
  • 源码到JVM指令的对应格式
  • Javap
  • JVM反汇编的格式
<index><opcode>[<operand1>[<operand2>]] [<comment>]

(在jvm中直接执行的是jvm的指令代码,下图右侧。)

vmmem是啥 vmm表示的是_jvm_03