当前位置:首页 > 数码 >

jre是什么文件夹(jre系统库是干什么的)

来源:原点资讯(www.yd166.com)时间:2024-06-17 13:26:51作者:YD166手机阅读>>

首先是JDK

JDK(java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 在JDK的安装目录下有一个JRE目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是JVM,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

然后我们来看JRE

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

最后JVM也一目了然了

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

jre是什么文件夹,jre系统库是干什么的(1)

由上图一目了然:

JDK是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序。

JVM体系结构与运行原理:

Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。

jre是什么文件夹,jre系统库是干什么的(2)

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

1. 装载

装载过程负责找到二进制字节码并加载至JVM中,JVM通过类名、类所在的包名通过ClassLoader来完成类的加载,同样,也采用以上三个元素来标识一个被加载了的类:类名 包名 ClassLoader 实例 ID 。

2. 链接

链接过程负责对二进制字节码的格式进行校验、初始化装载类中的静态变量以及解析类中调用的接口、类。

完成校验后,JVM初始化类中的静态变量,并将其值赋为默认值。

最后对类中的所有属性、方法进行验证,以确保其需要调用的属性、方法存在,以及具备应的权限(例如public、private域权限等),会造成NoSuchMethodError、NoSuchFieldError等错误信息。

3. 初始化

初始化过程即为执行类中的静态初始化代码、构造器代码以及静态属性的初始化,在四种情况下初始化过程会被触发执行:

调用了new;

反射调用了类中的方法;

子类调用了初始化;

JVM启动过程中指定的初始化类。

jre是什么文件夹,jre系统库是干什么的(3)

ClassLoader抽象类的几个关键方法:

(1) loadClass

此方法负责加载指定名字的类,ClassLoader的实现方法为先从已经加载的类中寻找,如没有则继续从parent ClassLoader中寻找,如仍然没找到,则从System ClassLoader中寻找,最后再调用findClass方法来寻找,如要改变类的加载顺序,则可覆盖此方法

(2) findLoadedClass

此方法负责从当前ClassLoader实例对象的缓存中寻找已加载的类,调用的为native的方法。

(3) findClass

此方法直接抛出ClassNotFoundException,因此需要通过覆盖loadClass或此方法来以自定义的方式加载相应的类。

(4) findSystemClass

此方法负责从System ClassLoader中寻找类,如未找到,则继续从Bootstrap ClassLoader中寻找,如仍然为找到,则返回null。

(5) defineClass

此方法负责将二进制的字节码转换为Class对象

(6) resolveClass

此方法负责完成Class对象的链接,如已链接过,则会直接返回。

JVM运行时数据区:

第一块:PC寄存器

PC寄存器是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则PC寄存器中不存储任何信息。

第二块:JVM栈

JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址

第三块:堆(Heap)

它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收。

第四块:方法区域(Method Area)

(1)在Sun JDK中这块区域对应的为PermanetGeneration,又称为持久代。

(2)方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。

第五块:运行时常量池(Runtime Constant Pool)

存放的为类中的固定的常量信息、方法和Field的引用信息等,其空间从方法区域中分配。

第六块:本地方法堆栈(Native Method Stacks)

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

,

栏目热文

什么是jre(什么是JRE/JDK)

什么是jre(什么是JRE/JDK)

java,从大三上学期就开始接触,只是前几堂课翘掉了。导致,一直弄不明白,Jdk和JRE的区别是什么??经过几年的“钻研...

2024-06-17 13:40:50查看全文 >>

jre总分多少(jre满分多少)

jre总分多少(jre满分多少)

在四月底于比利时列日市(Liège)举办的JRE Congress(欧洲青年餐饮经理人协会大会)上,来自斯洛文尼亚Oš...

2024-06-17 13:16:19查看全文 >>

jre版本是什么(怎么判断自己jre是什么版本)

jre版本是什么(怎么判断自己jre是什么版本)

JRE 创建 JVM 并确保依赖项可供 Java 程序使用。它在开发运营和云配置中发挥着至关重要的作用。Java 开发工...

2024-06-17 13:21:47查看全文 >>

jre干啥的(jre直播)

jre干啥的(jre直播)

因为用的eclipse是免安装版,又碰上Java更新导致文件夹跟着版本号一起变了,最终让eclipse傻傻的找不到原来的...

2024-06-17 13:04:53查看全文 >>

jre三者关系详解(关于jre描述正确的是什么)

jre三者关系详解(关于jre描述正确的是什么)

概述因为对JDK,JRE,jvm这三者的联系与区别,一直都是模模糊糊的,所以今天特写此文,来整理下三者的关系。捋一捋思路...

2024-06-17 13:07:26查看全文 >>

如何理解jre(jre版本过低怎么解决)

如何理解jre(jre版本过低怎么解决)

Java开发工具包(JDK),Java虚拟机(JVM)和Java运行时环境(JRE)共同构成了用于开发和运行Java应用...

2024-06-17 13:23:48查看全文 >>

落地是结束的意思吗(我终于明白落地是什么意思)

落地是结束的意思吗(我终于明白落地是什么意思)

· 企业文化到底怎样落地?· 这个“地”究竟在哪里?· 一直在落地,为什么文化问题依然没有解决?· 如何才能激发出组织与...

2024-06-17 13:14:03查看全文 >>

落幕代表着什么(落幕是什么意思可以用在什么地方)

落幕代表着什么(落幕是什么意思可以用在什么地方)

从1996年黄金一代的横空出世,再到03年白金一代的落幕代表着一代人的青春即将结束,曾经轰动全美的最强高中生勒布朗詹姆斯...

2024-06-17 13:04:47查看全文 >>

落幕表达着什么意思(落幕含义)

落幕表达着什么意思(落幕含义)

6月20日,歌手陈俊彤最新单曲《落幕》正式上线并在TME独家播放,此次他独立完成作词作曲,将这首深情而又充满故事感的抒情...

2024-06-17 13:10:16查看全文 >>

落幕是什么意思网络用语(谢幕是什么意思网络用语什么梗)

落幕是什么意思网络用语(谢幕是什么意思网络用语什么梗)

祖国的七十华诞前夕,乐空间也在秋日的北新桥,度过了自己的三周岁生日。乐队的夏天刚过,关于回忆和经典的“乐队的昨天——中国...

2024-06-17 13:20:04查看全文 >>

文档排行