2222
2323 < meta name ="description " content ="程序如何装载 Main\.java, Minor\.java -> jar包.java Main\.main(): 编译打包jar包.java Main\.main() -> 验证: 加载jar包.java Main\.main() -> Minor\.class: 使用Minor\.class -> JVM: 加载验证 -> 准备 -> 解析 -> 初 ">
2424< meta property ="og:type " content ="article ">
25- < meta property ="og:title " content ="JVM ">
25+ < meta property ="og:title " content ="JVM原理 ">
2626< meta property ="og:url " content ="http://simuleite.github.io/ComputerScience/%E7%9F%A5%E8%AF%86/JVM%E5%8E%9F%E7%90%86/index.html ">
2727< meta property ="og:site_name " content ="SMULET's BLOG ">
2828< meta property ="og:description " content ="程序如何装载 Main\.java, Minor\.java -> jar包.java Main\.main(): 编译打包jar包.java Main\.main() -> 验证: 加载jar包.java Main\.main() -> Minor\.class: 使用Minor\.class -> JVM: 加载验证 -> 准备 -> 解析 -> 初 ">
2929< meta property ="og:locale " content ="zh_CN ">
3030< meta property ="article:published_time " content ="2025-03-01T16:00:00.000Z ">
31- < meta property ="article:modified_time " content ="2025-04-25T14:29:45.202Z ">
31+ < meta property ="article:modified_time " content ="2025-04-25T14:32:31.642Z ">
3232< meta property ="article:author " content ="SIMULEITE ">
3333< meta property ="article:tag " content ="知识 ">
3434< meta name ="twitter:card " content ="summary ">
3838
3939
4040
41- < script class ="next-config " data-name ="page " type ="application/json "> { "sidebar" :"" , "isHome" :false , "isPost" :true , "lang" :"zh-CN" , "comments" :true , "permalink" :"http://simuleite.github.io/ComputerScience/%E7%9F%A5%E8%AF%86/JVM%E5%8E%9F%E7%90%86/" , "path" :"ComputerScience/知识/JVM原理/" , "title" :"JVM " } </ script >
41+ < script class ="next-config " data-name ="page " type ="application/json "> { "sidebar" :"" , "isHome" :false , "isPost" :true , "lang" :"zh-CN" , "comments" :true , "permalink" :"http://simuleite.github.io/ComputerScience/%E7%9F%A5%E8%AF%86/JVM%E5%8E%9F%E7%90%86/" , "path" :"ComputerScience/知识/JVM原理/" , "title" :"JVM原理 " } </ script >
4242
4343< script class ="next-config " data-name ="calendar " type ="application/json "> "" </ script >
44- < title > JVM | SMULET's BLOG</ title >
44+ < title > JVM原理 | SMULET's BLOG</ title >
4545
4646
4747
200200 </ span >
201201
202202 < span hidden itemprop ="post " itemscope itemtype ="http://schema.org/CreativeWork ">
203- < meta itemprop ="name " content ="JVM | SMULET's BLOG ">
203+ < meta itemprop ="name " content ="JVM原理 | SMULET's BLOG ">
204204 < meta itemprop ="description " content ="">
205205 </ span >
206206 < header class ="post-header ">
207207 < h1 class ="post-title " itemprop ="name headline ">
208- JVM
208+ JVM原理
209209 </ h1 >
210210
211211 < div class ="post-meta-container ">
@@ -223,7 +223,7 @@ <h1 class="post-title" itemprop="name headline">
223223 < i class ="far fa-calendar-check "> </ i >
224224 </ span >
225225 < span class ="post-meta-item-text "> 更新于</ span >
226- < time title ="修改时间:2025-04-25 22:29:45 " itemprop ="dateModified " datetime ="2025-04-25T22:29:45 +08:00 "> 2025-04-25</ time >
226+ < time title ="修改时间:2025-04-25 22:32:31 " itemprop ="dateModified " datetime ="2025-04-25T22:32:31 +08:00 "> 2025-04-25</ time >
227227 </ span >
228228
229229
@@ -251,6 +251,7 @@ <h1 id="类加载器"><a class="markdownIt-Anchor" href="#类加载器"></a> 类
251251< li > 其他加载器:加载自定义路径下的类包</ li >
252252</ ol >
253253< figure class ="highlight plaintext "> < table > < tr > < td class ="code "> < pre > < span class ="line "> java com\.site\.jvm\.Math\.class -> java\.exe调用底层jvm\.dll创建Java虚拟机 -> 创建引导类加载器实例</ span > < br > < span class ="line "> 创建引导类加载器实例 -> sum\.misc\.Launcher\.getLauncher(): C++调用Java代码,创建JVM启动器实例,这个实例负责创建其他类加载器</ span > < br > < span class ="line "> sum\.misc\.Launcher\.getLauncher() -> launcher\.getClassLoader(): 获取运行类自己的加载器ClassLoader(AppClassLoader实例)</ span > < br > < span class ="line "> launcher\.getClassLoader() -> classLoader\.loadClass("com\.site\.jvm\.Math"):调用loadClass加载即将要运行的类</ span > < br > < span class ="line "> classLoader\.loadClass("com\.site\.jvm\.Math") -> Math\.main(): 加载完成后,JVM执行Math.main()</ span > < br > < span class ="line "> 创建引导类加载器实例 -> Math\.main(): C++发起调用 </ span > < br > < span class ="line "> Math\.main()-> JVM销毁: Java程序运行结束</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
254+ < span id ="more "> </ span >
254255< h1 id ="双亲委派机制 "> < a class ="markdownIt-Anchor " href ="#双亲委派机制 "> </ a > 双亲委派机制</ h1 >
255256< figure class ="highlight plaintext "> < table > < tr > < td class ="code "> < pre > < span class ="line "> direction: up</ span > < br > < span class ="line "> 应用程序类加载器 -> 拓展类加载器: 向上委托</ span > < br > < span class ="line "> 拓展类加载器 -> 引导类加载器: 向上委托</ span > < br > < span class ="line "> 引导类加载器 -> 拓展类加载器: 父加载器加载失败,由子加载器自己加载</ span > < br > < span class ="line "> 拓展类加载器 -> 应用程序类加载器: 父加载器加载失败,由子加载器自己加载</ span > < br > </ pre > </ td > </ tr > </ table > </ figure >
256257< p > pros:</ p >
0 commit comments