zoukankan      html  css  js  c++  java
  • Java虚拟机基础

    Java虚拟机基础

    JVM是Java Virtual Machine的缩写。JVM是一个可以将Java字节码转换成机器语言并能被机器(电脑)执行的Java字节码处理引擎。Java字节码是处于Java和机器之间的语言,当其被JVM转化成机器语言时就能被机器执行。

     

    JVM简单介绍

    首先简单介绍下Java字节码、JVM以及机器的概念。

    当一个Java程序被创建后,后缀为.java的文件也就被创建了。该文件包含多个属性,包括类、方法、对象等等。后缀为.java的文件接着会被Java编译器编译,从而产生后缀为.class的文件(也称为Java字节码文件)。JVM会阅读并理解这个.class文件并将其解释为机器语言,从而能执行这个文件

     

    JVM这个平台是独立的吗?

    Java是平台不独立的因为它需要JVM,虽然JVM是平台独立的。可以运行Java代码的机器上必须要先安装好JVM。在能执行Java字节码的机器上,JVM会解释.class文件并且产生不同的只能被机器理解的机器语言。不同的机器上可能有着不同的操作系统, 例如:Windows、Mac OS、Unix或者Linux。如果机器上没有安装JVM的话,这些操作系统是不能解释Java字节码的,因为一个操作系统只能理解机器语言。JVM将Java字节码转化成机器语言并让它能被操作系统理解和执行。这意味着Java可以运行在任何机器上,前提是该机器上安装了JVM。

     

    JVM的组成

    当解释和执行Java字节码的时候,JVM使用了多个组件,例如:栈、寄存器、垃圾回收器等等。接下来让我们对它的组件有个初步的认识:

    栈:它是方法的参数和本地变量的仓库。它可以被指向不同区域的寄存器熟练控制。

    寄存器:在JVM中有许多寄存器,比如Vars(指向当前执行环境中第一个局部变量的指针)、Frame(当前环境指针)、PC(程序计数器)和OpTop(操作数栈顶指针)。Vars寄存器指向正在被当前方法使用的本地变量。frame寄存器指向当前执行环境,也就是栈的环境。OpTop寄存器指向运算栈,字节码的指令在这里执行。程序计数器寄存器指向保存字节码的方法区。所有寄存器均为32位。PC用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。

    • 方法区:它是保存Java字节码的地方。该区域能被所有线程共享,因此能确保线程同步。 

    • 垃圾回收器:它是JVM真正保存Java对象的组件。需要注意的是,Java对象的引用是保存在栈中的,而真正的对象在垃圾回收器中。Java使用垃圾回收机制来释放内存并分配给不同的对象,不像C/C++那样要使用运算符来释放内存。

     
     

     

  • 相关阅读:
    [bzoj3172] [Tjoi2013]单词
    [luogu2664] 树上游戏
    [bzoj3307] 雨天的尾巴
    [bzoj3141] [HNOI2013]旅行
    [bzoj4515] [SDOI2016]游戏
    [bzoj3165] [HEOI2013]Segment
    Spring MVC-从零开始-view-直接返回页面不传data
    Spring MVC-从零开始-view-ViewResolver
    Spring MVC-从零开始-@RequestMapping结合@PathVariable (从URL路径中取值,作用于函数参数)
    Spring MVC-从零开始-@RequestMapping 注解headers 属性
  • 原文地址:https://www.cnblogs.com/stm32stm32/p/6433278.html
Copyright © 2011-2022 走看看