最近这段时间总有小伙伴问小编jv是什么意思(jv是什么缩写)是什么,小编为此在网上搜寻了一些有关于jv是什么意思(jv是什么缩写)的知识送给大家,希望能解答各位小伙伴的疑惑。


(相关资料图)

首先,JDK

JDK(Java Development Kit)是Java语言的软件开发工具包(SDK)。JDK的安装目录下有一个jre目录,里面包含bin和lib两个文件夹。这里可以认为jvm在Bin中,jvm需要的类库在lib中,jvm和lib的结合称为jre。

那我们再来看看JRE。

JRE(Java Runtime Environment,Java运行时环境),包括JVM标准实现和Java核心类库。JRE是Java运行时环境,不是开发环境,所以不包含任何开发工具(比如编译器和调试器)。

最后,JVM是清楚的。

JVM是Java虚拟机(Java Virtual Machine)的缩写。JVM是计算设备的规范。它是一台虚构的计算机,是在一台实际的计算机上模拟各种计算机功能而实现的。

从上图可以看出:

JDK是整个Java的核心,包括Java运行时环境JRE、Java工具和Java基础类库。JRE是运行Java程序的必要环境的 *** ,包括JVM标准实现和JAVA核心类库。JVM是整个java跨平台实现的核心部分,可以运行用Java语言编写的程序。

JVM架构和工作原理:

用Java编写的源程序被编译成一个平台无关的‘字节码程序’(。类文件,即0,1二进制程序),然后在OS上的Java解释器中解释和执行。

JVM整个类加载过程的步骤:

1。正在加载

加载过程负责找到二进制字节码并将其加载到JVM中。JVM通过类名加载类,通过类加载器加载类的包名。类似地,上面的三个元素用于标识一个加载的类:类名、包名、类加载器实例ID。

2。链接

链接过程负责检查二进制字节码的格式,初始化加载类中的静态变量,并解析类中调用的接口和类。

验证之后,JVM初始化类中的静态变量,并将它们的值赋为默认值。

最后,对类中的所有属性和方法进行验证,以确保需要调用的属性和方法存在,并且具有适当的权限(如公共和私有域权限等。),这样会造成NoSuchMethodError、悠游资源网NoSuchFieldError等悠游资源网信息错误。

3。初始化

初始化过程是执行类中静态初始化代码、构造函数代码和静态属性的初始化。初始化过程将在以下四种情况下触发执行:

调用新的;;

反射调用了类中的方法;

一个叫做初始化的子类;

JVM启动期间指定的初始化类。

类加载器抽象类的几个关键方法:

(1)荷载等级

此方法负责加载具有指定名称的类。ClassLoader的实现方法是先搜索已经加载的类,如果没有,继续从父ClassLoader中搜索,如果还是没有找到,从系统ClassLoader中搜索,最后调用findClass方法找到。如果要更改类的加载顺序,可以重写此方法。

(2) findLoadedClass

该方法负责从当前类加载器实例对象的缓存中查找加载的类,并调用本机方法。

(3)查找类别

这个方法直接抛出ClassNotFoundException,所以需要通过重写loadClass或者这个方法,以自定义的方式加载相应的类。

(4) findSystemClass

这个方法负责从系统类加载器中找到类。如果没有找到,它将继续从Bootstrap ClassLoader中找到该类。如果仍然找到,它将返回null。

(5)定义阶级

这个方法负责将二进制字节码转换成类对象。

(6)解析类

这个方法负责链接类对象,如果已经链接了,就直接返回。

JVM运行时数据区:

之一个模块:PC寄存器

PC寄存器用于存储每个线程在下一步要执行的JVM指令。如果该方法是本地的,则PC寄存器中不会存储任何信息。

第二个块:JVM堆栈

JVM栈是线程私有的,每个线程同时创建一个JVM栈。JVM堆栈存储当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分返回结果和堆栈帧。非基本类型的对象Youyou Resources Network在JVM栈上只存储一个指向栈的地址。

第三块:堆

它是JVM用来存储对象实例和数组值的区域。可以认为这里分配了Java中new创建的所有对象的内存,堆中对象的内存需要等待GC回收。

模块4:方法区域

①在孙,这一带对应永久世代,也称永久世代。

(2)方法区存储信息(名称、修饰符等。)类、类中的静态变量、类中定义为最终类型的常数、类中的字段信息以及类中的方法信息。开发者在程序中通过类对象中的getName、isInterface等方法获取信息时,这些数据都来自方法区,方法区是全局共享的。在一定条件下,它也会是GC,当方法区域需要的内存超过其允许的大小时,它会抛出OutOfMemory错误消息。

块5:运行时常量池

存储为类中的固定常数信息、方法和字段的引用信息等。,它的空是从方法区域分配的。

块6:本机方法堆栈[/S2/]

JVM采用本地方法栈来支持本地方法的执行,这个区域用来存储每个本地方法调用的状态。