JVM

Posted steakliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM相关的知识,希望对你有一定的参考价值。

介绍

 


  JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

  JVM所处位置:从下图可以看出JVM 是运行在操作系统之上的,与硬件没有直接的交互

技术图片

 

     JVM结构图体系

技术图片

 

 

 

  类装载器 ClassLoader,执行引擎 ExecutionEngine

  类装载器 ClassLoader

  类装载器负责加载 .class 文件,class 文件在文件开头有特定的文件标示(cafe babe),将.class文件加载到内存中,将其放在运行时数据区的方法区(放类的描述信息)内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构, ClassLoader 只负责 class 文件的加载,至于它是否可以运行,则由 Execution Engine 决定。ClassLoader有多个

  技术图片

 

   ClassLoader:  

    启动类加载器:Bootstrap ClassLoader,负责加载存放在JDKjrelib(JDK代表JDK的安装目录,下同)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库(如rt.jar,所有的java.*开头的类均被Bootstrap ClassLoader加载)。启动类加载器是无法被Java程序直接引用的。

 

   扩展类加载器:Extension ClassLoader,该加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载DKjrelibext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。

 

   应用程序类加载器:Application ClassLoader,该类加载器由sun.misc.Launcher$AppClassLoader来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。

   

以上是关于JVM的主要内容,如果未能解决你的问题,请参考以下文章

jvm基础--JVM参数配置

jvm基础--JVM内存模型

jvm基础--JVM内存模型

JVM基础:深入学习JVM堆与JVM栈(转)

JVM堆与JVM栈

JVM内存管理和JVM垃圾回收机制