zoukankan      html  css  js  c++  java
  • JVM基础知识总结

    因为没深入搞底层研究,所以也就没做很细致的笔记。相关笔记内容是直接从度娘那儿来的,重新删减、整理和加了点自己的东西。

    1、JVM(Java Virtual Machine)是什么:
    JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
    这样它就能实现平台无关性。

    2、支持的数据类型:
    byte://1字节有符号整数的补码
    short://2字节有符号整数的补码
    int://4字节有符号整数的补码
    long://8字节有符号整数的补码
    float://4字节IEEE754单精度浮点数
    double://8字节IEEE754双精度浮点数
    char://2字节无符号Unicode字符
    JVM没有单独的boolean类型,单个boolean由integer指令处理,boolean数组由byte数组处理

    3、JVM的规格:
    JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
    JVM指令系统
    JVM寄存器
    JVM 栈结构
    JVM 碎片回收堆
    JVM 存储区

    4、工作原理:
    4.1JVM执行程序的过程:
    I.加载.class文件
    II.管理并分配内存
    III.执行垃圾收集

    4.2操作系统装入JVM环境的过程:
    因为JVM是一个虚拟计算机,所以运行的时候需要先被OS装入,比如在windows系统下,.操作系统通过jdk中Java.exe来装入JVM:
    a.创建JVM装载环境和配置
    b.装载JVM.dll
    c.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例
    d.调用JNIEnv实例装载并处理class类。

    5、指令系统:
    Java指令同样是由操作码和操作数两部分组成,操作数紧跟操作码后面。
    操作码为8位二进制数。如果长度大于8,则被分为两个以上字节存放,采用大端编码方式(字数据的高字节存储在低地址中)。顺带一提,Intel采用的是小端编码(字数据的低字节存储在低地址中)。
    在此给出大小端相关知识的学习笔记

    此外,可以了解和学习的相关知识是JNI,即Java本地调用(Java Native Interface),它可以令java程序与本地已编译的代码(比如用c或c++写的代码)交互,但是会丧失平台可移植性。有空再写一写关于JNI的学习笔记。

  • 相关阅读:
    arr.forEach()与for...in的用法举例
    git
    hql查询
    JAVA Hibernate工作原理及为什么要用
    mysql中key 、primary key 、unique key 与index区别
    aop
    hibernate json数据死循环
    nginx 转帖
    Maven搭建web项目
    ajaxfileupload 附加参数
  • 原文地址:https://www.cnblogs.com/nerohwang/p/3490505.html
Copyright © 2011-2022 走看看