zoukankan      html  css  js  c++  java
  • 我的面试经之JVM(一)JVM简述

    Java 跨平台语言

    JVM 跨语言平台

    Java进化史:

     

    虚拟机:Virtual Machine,对硬件进行模拟的软件,虚拟的计算机

    Java虚拟机:执行Jvm字节码的虚拟计算机,是二进制字节码的运行环境

    JVM的位置

    jvm整体结构

    方法区和堆,多个线程共享

    Java栈(又叫虚拟机栈),本地方发栈,程序计数器这三个每个线程独有一份

     【运行时数据区是单例的,一个虚拟机一个】

    【hotspot 才有方法区,其他两大商用虚拟机没有【HotSpot,JRocket,J9】】

     class files前边是编译器前端

    执行引擎相当于编译器后端

    java代码执行流程

    第一次编译,把java源文件编译成字节码.class文件,第二次编译JIT编译器把.class文件编译成机器指令文件,并且缓存到方法区

    JVM架构模型

    指令集架构分为两种,基于栈的指令集架构,基于寄存器的指令集架构

    两种指令集架构区别

    基于栈式架构的特点:

      设计和实现简单【每执行一个方法,就进行一次入栈的操作】,适用于资源受限的系统(eg:嵌入式)

      避开了寄存器的分配难题;使用零地址指令分配方式

      指令流中的指令大比分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现

      不需要硬件实现,可以执性更好,更好实现跨平台

    基于寄存器架构的特点:

      典型的是x86的二进制指令集:比如传统的PC以及Android 的Davlik虚拟机

      指令集架构完全依赖于硬件,可移植性差

      性能优秀和执行更高效(指令集少,指令长)、

      花费更少的指令去完成意向操作

      带大部分情况下,基于寄存器架构的指令集往往都以一地址指令,二地址指令,三地址指令为主,而基于栈架构的指令集以零地址指令为主 

    JVM的生命周期

      启动

        通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的

      执行

        运行的虚拟机的任务:执行Java程序

        程序开始时运行,程序结束时就停止

        执行一个所谓的Java程序,真真正正执行的一个叫做Java虚拟机的进程

      退出

        程序正常执行结束

        程序在执行过程中遇到异常或错误异常终止

        由于OS出现错误导致JVM进程终止

        某线程调用Runtime类的exit方法,或halt方法,并且Java安全管理器也允许这次exit或halt方法

        除此之外,JNI(Java Native Interface)规范描述了用JNI Invocation API 来加载或卸载时,Java虚拟机退出的情况

              

  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/Timeouting-Study/p/12433272.html
Copyright © 2011-2022 走看看