博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初步了解JVM
阅读量:4185 次
发布时间:2019-05-26

本文共 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/

你可能感兴趣的文章
一个因为SQL join引发的内存泄露
查看>>
Oracle体系结构详解
查看>>
Oracle体系结构详细图解
查看>>
Shared Everything和share-nothing区别
查看>>
SAS硬盘和SATA硬盘最大的区别是什么?
查看>>
SATA、SAS、SSD三种硬盘存储性能数据
查看>>
Greenplum技术浅析
查看>>
SQL如何查询一张表的所有字段并按其中一个字段进行分组
查看>>
GROUP BY...HAVING 组合查询大总结
查看>>
MATLAB
查看>>
金融术语科普 , 什么是GP、LP、PE、VC和FOF
查看>>
SAS 系统全称为Statistics Analysis System
查看>>
算法使用1
查看>>
java中的集合和数组
查看>>
Java运算符优先级
查看>>
IndexWriterConfig这个配置管理类
查看>>
lucene以.gen ,.si为后缀名的文件。
查看>>
段文件格式的组成以及结构
查看>>
fnm的索引文件格式的具体结构及数据类型
查看>>
在Lucene中,如何完成一个搜索的过程
查看>>