JVM从入门到基础(一) 一JVM介绍

JVM从入门到基础 一JVM介绍

一 概念

  • JVM是JAVA Vittual Machhine的简称,意为Java虚拟机。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

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

  • JVM使用软件模拟JAVA字节码的指令集。

二 JVM规范

  1. JAVA语言规范定义了什么是JAVA语言,而JVM主要定义了二进制class文件和JVM指令集等。JAVA语言与JVM相对独立。

  2. JVM定义了Class的文件格式

  3. JVM数字的内部存储和表示范围–Byte -128 to 127 (-2^7 to 2^7 - 1)

  4. 定义相应的数据类型、堆、栈、方法区。

  5. JVM中整数的表示用原码、补码、反码。

    • 原码:第一位为符号位(0为整数,1位负数)

    • 反码:符号位不动,原码取反。

    • 负数补码:符号位不动,反码加1。

    • 正数补码:和原码相同。

    为什么使用补码?,对于0而言,如果用原码表示0,正数的0位00000000,负数的0位10000000,这样的表示有歧义,但是对于0的补码而言,正数的0为00000000,负数的0为0的补码11111111加1结果为00000000,这样的表示没有歧义。

    同时补码能够很好的参与二进制运算,例如-6+5换算成补码的话为11111010+00000101=11111111换算成原码的话结果为-1,又如-4+5=11111100+00000001=00000001=1,还如-3+5=11111101+00000101=00000010=2。这样使用补码在计算机内部计算,可以直接以补码在计算机内部以加法方式进行运算,同时符号位参加运算,即可得到相应的结果。​

  6. VM 指令集

    1. 类型转化:l2i

    2. 出入栈操作 aload astore

    3. 运算 iadd i sub

    4. 流程控制 ifeq ifne

    5. 函数调用 invokevirtual invokeinterface invokespecial invokestatic

  7. JVM需要对JAVA library提供以下支持:

    1. 反射 java.lang.reflect
    2. ClassLoader
    3. 初始化class和interface
    4. 安全相关 java.security
    5. 多线程
    6. 弱引用

你可能感兴趣的:(JVM从入门到基础,jvm,虚拟机,java)