个性化阅读
专注于IT技术分析

JVM:Java虚拟机介绍

本文概要

JVM(Java虚拟机)是一个抽象的机器。这是,它提供了Java字节码可以被执行的运行时环境的规范。

JVM适用于许多硬件和软件平台(即JVM平台而定)。

什么是JVM

它是:

  1. 其中,Java虚拟机的工作的规范中指定。但是,实施供应商是独立选择的算法。它的实施已经被甲骨文等公司提供。
  2. 实现它的实施被称为JRE(Java运行环境)。
  3. 运行时实例每当你写在命令提示符下运行java类的java命令,创建JVM的一个实例。

它能做什么

以下操作中的JVM执行:

  • 加载代码
  • 验证码
  • 执行代码
  • 提供运行环境

JVM提供了定义:

  • 存储区
  • 类文件格式
  • 寄存器组
  • 垃圾收集堆
  • 致命错误报告等。

JVM体系结构

我们先来了解JVM的内部结构。它含有的类加载器,存储区,执行引擎等。

1)类加载器

类加载器是JVM的一个子系统,其用于加载的类文件。每当我们运行Java程序,它是由类加载器第一次加载。有三个内置的类装载器在Java中。

  1. 引导类加载器:这是第一类加载器是超类扩展类加载器的。它加载其中包含Java标准版的所有类文件一样java.lang包类的rt.jar文件,java.net包类,java.util包中的类,java.io包中的类,java.sql包类等。
  2. 扩展类加载器:这是引导的子类加载器和系统类加载器的父类加载器。它loades位于$ JAVA_HOME / JRE / lib / ext目录里面的jar文件。
  3. 系统/应用的ClassLoader:这是扩展类加载器的子类加载器。它加载从classpath中的类文件。默认情况下,类路径设置为当前目录。你可以使用“-cp”或“-classpath”开关改变类路径。它也被称为应用程序类加载器。
//Let's see an example to print the classloader name
public class ClassLoaderExample
{
    public static void main(String[] args)
    {
        // Let's print the classloader name of current class. 
        //Application/System classloader will load this class
        Class c=ClassLoaderExample.class;
        System.out.println(c.getClassLoader());
        //If we print the classloader name of String,it will print null because it is an
        //in-built class which is found in rt.jar,so it is loaded by Bootstrap classloader
        System.out.println(String.class.getClassLoader());
    }
}

输出:

sun.misc.Launcher$AppClassLoader@4e0e2f2a
null

这是Java提供的内部类加载器。如果你想创建自己的类加载器,你需要扩展ClassLoader类。

2)类(方法)面积

类(方法)区存储每个类结构,如运行时的常量池,字段和方法的数据,方法的代码。

3)堆

这是哪些对象被分配运行时数据区。

4)堆栈

Java堆栈存储帧。它拥有局部变量和部分结果,并起着方法调用和返回的一部分。

每个线程都有一个专用JVM栈,同时为线程创建。

一个新帧创建的每个被调用的方法的时间。其方法调用完成时的帧被破坏。

5)程序计数器寄存器

PC(程序计数器)寄存器包含当前正在执行的Java虚拟机指令的地址。

6)本机方法堆栈

它包含在应用程序中使用的所有本机方法。

7)执行引擎

它包含了:

  1. 虚拟处理器
  2. 解释:读取字节码流,然后执行指令。
  3. 刚刚在实时(JIT)编译器:它是用来提高性能。 JIT编译具有同时类似的功能的字节代码的部分,并因此减少所需的编译时间的量。在这里,术语“编译”是指从Java虚拟机(JVM)的指令集指令集特定CPU的翻译。

8)Java本地接口

Java本地接口(JNI)是一个框架,它提供了与写在如C,C另一种语言的另一应用进行通信的接口++,汇编等Java使用JNI框架来输出发送到控制台或相互作用与OS库。

赞(0)
未经允许不得转载:srcmini » JVM:Java虚拟机介绍

评论 抢沙发

评论前必须登录!