本文共 1410 字,大约阅读时间需要 4 分钟。
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
2)方便计算:如果是用补码表示整数,那么只要对应位置上的0和1相加就可以了。
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反汇编的格式
[ [ ]] [ ]
(在jvm中直接执行的是jvm的指令代码,下图右侧。)
转载地址:http://infoi.baihongyu.com/