JVM之详解Java类的装载过程及类加载过程

本文详细介绍了Java程序的运行过程,从字节码文件加载到JVM的类加载机制,包括加载、链接、初始化的步骤。讲解了类加载器的角色,如Bootstrap、Extension和Application ClassLoader,并探讨了双亲委派加载模型及其作用。此外,还讨论了自定义类加载器的原因以及JVM的初始运行时数据区和执行引擎的组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、了解Java程序运行的过程

二、字节码文件的“装到”JVM的机制——类加载机制

1.步骤

2.步骤详解

3.class初始化时机

4.类加载的实现者——类加载器

Bootrap ClassLoader介绍

Extension ClassLoader介绍

Application ClassLoader介绍

5.双亲委派加载机制/模型(面试常考)

双亲委派加载机制/模型的作用

为什么要自定义类加载器?

三、初始运行时数据区

四、JVM执行引擎的组成

五、总结

 



前言

阅读本文之前请先仔细思考以下问题:

  1. 为什么要学习JVM?学习JVM是为了什么?

  2. 为什么Java语言代码能一次编写,到处运行(Write Once,Run Anywhere)?

  3. JVM是多语言的平台,JRuby、Groovy、Scala等为什么能运行在JVM之上?

  4. Java到底是解释型的语言还是编译型的语言?

 

补充1:JDK:JRE:JVM三者之间的区别?

JDK=JRE+开发工集(例如:Javac编译工具等)

JRE=JVM+基础标准类库

补充2:理解“JVM是跨语言的平台”这句话

 

一、了解Java程序运行的过程

Java程序的运行过程可以概括为先通过编译工具javac将.java文件编译为.class字节码文件,接着通过java.exe把字节码文件加载到JVM,如下图所示:

Java程序运行流程

从定性角度分析,.java文件转换到.class文件只不过是转换了一种形式而已,转换得到的.class文件称为字节码文件,它有固定的结构(参考字节码文件格式和虚拟机规范https://docs.oracle.com/javase/specs/jvms/se8/html/index.html)。当然,除了阅读这个文档之外,还可以通过javap命令来反编译字节码文件去分析其中的内容。

二、字节码文件的“装到”JVM的机制——类加载机制

1.步骤

loading->linking->initializing

2.步骤详解

1.加载:通过类的全限定名来获得文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值