Java-jvm学习

2024-02-19  本文已影响0人  没有了遇见

1:Jvm是什么

Jvm 虚拟机(Java Virtual Machine)字面意思,Java虚拟的机器 ,一种Java,用于计算机设备的规范.

介绍:

Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。

重点:

Jvm 是Java实现跨平台的基础,只要平台支持Jvm Java语言写的项目就能在此平台上运行.

2:Jvm结构

Jvm结构图.png

Jvm由 以下几个部分组成

3:类加载器

类加载器:
类加载器是Jvm提供的一种类加载的机制. 类加载器负责将class文件加载到内存中,转化为可执行对象.所有类都是由类加载器加载的
类加载器还负责解析类的依赖关系,即加载所需的其他类。

类加载器分类
3.1 Bootstrap Class Loader启动类加载器

Bootstrap Class Loader 启动类加载器,又称跟加载器,是最顶层的加载器.是由C++实现,负责加载Java的核心类,%JAVA_HOME%/lib目录下的核心jar包和类或者或被 -Xbootclasspath参数指定的路径中的所有类,例如:java.lang.Object

3.2 ExtensionClassLoader 扩展类加载器:

主要负责加载目录 %JRE_HOME%/lib/ext 目录下的jar包和类,或被 java.ext.dirs 系统变量所指定的路径下的jar包。

3.2 AppClassLoader 应用程序类加载器:

面向我们用户的加载器,负责加载当前应用classpath下的所有jar包和类。

除了这三个主要的类加载器,Java还支持自定义类加载器,开发人员可以根据需要实现自己的类加载器。
注意:
除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承自java.lang.ClassLoader

3.3 类生命周期

类生命周期.png

一个类的生命周期,就是类加载器加载到卸载一个类的过程.
类的生命周期可以分为以下几个阶段:

赋初值两种方式:
定义静态变量时指定初始值。如 private static String x="123";
在静态代码块里为静态变量赋值。如 static{ x="123"; }
注意:只有对类的主动使用才会导致类的初始化

3.4 类加载机制-双重委派机制(爹来模式)(重要)

类加载器采用了双亲委派模型(Parent Delegation Model)来加载类。
即当一个类加载器需要加载类时,自身不会加载会首先发送给父类加载,父类要是还有父类就会依次向上传递,父类不能加载会返回给子类,子类加载,子类也加载不了会抛出ClassNotFoundException异常
好处:
确保类只加载一次

上一篇 下一篇

猜你喜欢

热点阅读