<commit_before>---
layout: default
title: Java 类加载机制
---

## 加载过程

假如我们运行一个程序，那么，Java 是如何进行类加载过程的呢？

```
java HelloWorld
```

基本的过程

1. 查找 jvm.dll ，初始化 JVM
2. 产生 Bootstrap Loader (启动类加载器)，并加载 JAVA_HOME/lib 下的Java核心API
3. Bootstrap Loader 加载 Extended Loader (标准扩展类加载器), Extended Loader 加载 JAVA_HOME/lib/ext 下的扩展类
4. Bootstrap Loader 加载 AppClass Loader (系统加载器), 并将其父加载器设置为 Extended Loader
5. AppClass Loader 加载 CLASSPATH 目录下的 HelloWorld 类
<commit_msg>Update 2014-09-21-java-class-loader.md<commit_after>---
layout: default
title: Java 类加载机制
---

## 加载过程

假如我们运行一个程序，那么，Java 是如何进行类加载过程的呢？

```
java HelloWorld
```

基本的过程

1. 查找 jvm.dll ，初始化 JVM
2. 产生 Bootstrap Loader (启动类加载器)，并加载 JAVA_HOME/jre/lib 下的Java核心API类，都在 rt.jar 里。
3. Bootstrap Loader 加载 Extended Loader (标准扩展类加载器), Extended Loader 加载 JAVA_HOME/jre/lib/ext 下的扩展类
4. Bootstrap Loader 加载 AppClass Loader (系统加载器), 并将其父加载器设置为 Extended Loader
5. AppClass Loader 加载 CLASSPATH 目录下的 HelloWorld 类

{'fraction_non_alphanumeric': 0.09841269841269841, 'fraction_numerical': 0.01904761904761905, 'mean_word_length': 4.597633136094674, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3417077', 'n_tokens_mistral': 518, 'n_tokens_neox': 545, 'n_words': 111}