JAVA开发(java类加载过程)

article/2025/10/12 6:06:29

1、java语言的平台无关性。

因为java语言可以跑在java虚拟机上,所以只要能装java虚拟机的地方就能跑java程序。java语言以后缀名 .java为文件扩展名。通过java编译器javac编译成字节码文件.class 。java字节码文件通过java虚拟机解析运行。在虚拟机级别对class文件再进行编译解析运行。所以java语言可以说是编译解析型语言

java虚拟机屏蔽了操作系统的特性。使java语言编译一次,就可以在任何装有符合版本的java虚拟机的操作系统上运行。准备的来说,应该是java的字节码文件是平台无关性的,而非java代码

 2、java类加载过程。

类加载过程分为加载、连接和初始化三个阶段,其中的连接阶段又分为验证、准备和解析三个阶段。

要执行 Class 文件就需要先将其加载进内存,这一工作正是由类加载器 (ClassLoader) 完成的,系统为我们提供了三种类加载器,分别是启动类加载器 (Bootstrap ClassLoader)、扩展类加载器 (Extension ClassLoader) 和应用程序类加载器 (Application ClassLoader),如果有必要,我们也可以加入自定义的类加载器。
 

3、java虚拟机内存结构。

Classloader 是 JVM 的一个子系统,用于加载类文件。每当我们运行 java 程序时,它首先由类加载器加载。Java中有三个内置的类加载器。

Bootstrap ClassLoader:这是第一个类加载器,它是扩展类加载器的超类。它加载包含Java标准版所有类文件的rt.jar文件,如java.lang包类、java.net包类、java.util包类、java.io包类、java.sql包类等。

Extension ClassLoader:这是 Bootstrap 的子类加载器和 System 类加载器的父类加载器。它加载位于$JAVA_HOME/jre/lib/ext目录中的 jar 文件。

System/Application ClassLoader:这是扩展类加载器的子类加载器。它从类路径加载类文件。默认情况下,类路径设置为当前目录。您可以使用“-cp”或“-classpath”开关更改类路径。它也被称为应用程序类加载器。

2.类(方法)区

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

3.堆

它是分配对象的运行时数据区。

4.堆栈

Java Stack 存储帧。它保存局部变量和部分结果,并在方法调用和返回中发挥作用。

每个线程都有一个私有 JVM 堆栈,与线程同时创建。

每次调用方法时都会创建一个新框架。框架在其方法调用完成时被销毁。

5.程序计数器寄存器

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

6.原生方法栈

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

7.执行引擎

 

它包含了:

虚拟处理器,模拟CPU。

解释器:读取字节码流然后执行指令。

还有垃圾处理器!!!!

Just-In-Time(JIT) 编译器:用于提高性能。JIT 同时编译具有相似功能的部分字节码,从而减少编译所需的时间。这里,术语“编译器”是指从Java虚拟机(JVM)的指令集到特定CPU的指令集的翻译器。

8.Java 原生接口

Java Native Interface (JNI) 是一个框架,它提供了一个接口来与用另一种语言(如 C、C++、Assembly 等)编写的另一个应用程序进行通信。Java 使用 JNI 框架将输出发送到控制台或与 OS 库进行交互。
 


http://chatgpt.dhexx.cn/article/vnrkgwqS.shtml

相关文章

图解Java类加载机制

文章目录 前言类加载的概述双亲委派加载机制类加载的隔离机制contextClassLoaderSPI用处找文件用处 类加载的顺序顺序概述类加载的一般方式类加载的触发点 类的实例化多线程环境下,为何也只有一个Class的对象 图解和举例普通Java应用日常Web应用 附录 前言 网上有很…

【Java 】Java 类加载和类加载器

文章目录 前言一、加载二、链接验证准备解析 三、初始化发生的时机不会触发类的初始化 四、类加载器双亲委派模式 前言 Java 的类加载阶段分为:加载、链接、初始化,而链接的过程中包括:验证、准备、解析。 一、加载 将类的字节码载入方法区…

Java类加载过程图解

朋友给我发了一道有意思的题目,如下 为什么用.class的方式加载类和以Class.forName()的方式加载的结果不同呢,原因很简单,就是类加载过程的不同。 这就扯到基础理解上了,就是Java是如何加载一个类的呢? 上图是我绘制的…

Java类加载器加载类顺序

java ClassLoader的学习 java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次…

java类如何加载

最近研究java的进阶知识,先从java类加载机制学起,原先看过《深入理解java虚拟机》这本书,奈何书的知识面太广及自身只看了一遍,很多知识并不是很理解,今天看了几篇别人讲解的java类加载机制,觉得讲的很好&a…

JVM——Java类加载机制总结

1. 类加载器的组织结构 转载请注明出处:JVM——Java类加载机制总结_SEU_Calvin的博客-CSDN博客 类加载器 ClassLoader是具有层次结构的,也就是父子关系。其中,Bootstrap是所有类加载器的父亲。 (1)Bootstrapclass lo…

深入理解Java类加载器(1):Java类加载原理解析

1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解…

深入理解Java类加载器(一):Java类加载原理解析

摘要: 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这个异常背后涉及到的是Java技术体系中的类加载机制。本文简述了JVM三种预定义类加载器,即启动类加载器、扩展类加载器和系统类加载器,并介绍和分析它…

【Java · 类加载】类加载器

1. 概述 类加载器是 JVM 执行类加载机制的前提。 ClassLoader的作用: ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目…

java类加载

当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 一、类加载过程 加载指…

Java的类加载

1、类的加载过程 Java文件通过javac编译成.class二进制字节码文件,然后交给类加载器加载到我们的虚拟机内存中,最后我们通过new 对象来实现对象的初始化,才能调用和执行这个类,类的加载有三步:加载、连接、初始化。 1.1、加载 …

Java类的加载

类的生命周期 当java源代码文件被javac编译成class文件后,并不能直接运行,而是需要经过加载,连接和初始化这几个阶段后才能使用。在使用完类或被销毁后,JVM会将类卸载掉。 类加载的过程 类加载的过程需要经过三个阶段分别是&a…

「WAVE SUMMIT 2022深度学习开发者峰会」火热来袭

「WAVE SUMMIT 2022深度学习开发者峰会」火热来袭! 会上您将了解以飞桨为代表的深度学习领域的最新技术突破! 看最新的AI技术如何助力我国产业发展,先人一步了解技术风向。 5月20日 13:00期待与您相聚云端 报名即送好礼,快来参与吧…

Wave(.wav)文件格式

Wave文件格式主要是用来存储音频PCM数据的,其实也可以存储非PCM音频数据,这种情况我们就不考虑了。文件的扩展名为“.wav”,采用RIFF文件结构。 一、RIFF文件格式简介 1、RIFF文件是由一个一个的chunk组成的,并且chunk之间可以嵌…

wave文件格式

Wave文件采用RIFF文件格式,总体来看Wave文件是由多个chunk嵌套组成的;Wave文件最外层是一个标识为"RIFF"的类型块chunk1;在chunk1的data部分嵌套了2个chunk,即chunk2和chunk3;chunk2的标识为"fmt"…

WAVE 文件格式分析

WAVE 文件作为多媒体中使用的声音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的。每个WAVE文件的头四个字节便是“RIFF”。WAVE 文件由文件头和数据体两大部分组成。其中文件头又分为 RIFF/WAV 文件…

html wave标签,html wave的实现

如何实现wave动画?求demo 我理解的关键点: 1、色彩的均匀渐变,比较柔和,没有明显的过渡层 2、不同频率的正弦波 我的实现: 效果相差很大! let canvas1 = document.querySelector(#canvas1); let ctx = canvas1.getContext(2d); canvas1.width = canvas1.parentNode.offset…

802.11ac Wave2 将为WIFI性能和效果带来提升

Wi-Fi联盟推出的第二代802.11ac认证项目,使Wi-Fi网络的速度和效率又向前迈了一大步。 802.11ac正式颁布于2014年,标准包含了很多新特性,这些特性受到了Wi-Fi供应商和消费者的欢迎,特性包括: 采用5GHz频段 更宽的通道 更…

802.11ac wave2的前世今生

2015年下半年,高通、博通、RTL等芯片厂商相继发布了满足802.11ac wave2要求的芯片,WLAN及终端厂商也迅速跟进推出相应的产品和终端。802.11ac wave2在多方推动下于2015年底实现了商用,标志着802.11ac进入了新的发展阶段。 突破多用户并发能力…