[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ByteVortex/JavaGuide/main/docs/java/jvm/class-loading-process.md [Back]  [Original]

---
title: 
category: Java
tag:
  - JVM
---

## 

 7 LoadingVerificationPreparationResolutionInitializationUsingUnloadingLinking

 7 

![](https://oss.javaguide.cn/github/javaguide/java/jvm/lifecycle-of-a-class.png)

## 

**Class  Class **

 Class **->->****->->**

![](https://oss.javaguide.cn/github/javaguide/java/jvm/class-loading-procedure.png)

 [Java Virtual Machine Specification - 5.3. Creation and Loading](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.3 "Java Virtual Machine Specification - 5.3. Creation and Loading")

### 

 3 

1. 
2. 
3.  `Class` 

 3 ""  `ZIP`  `JAR``EAR``WAR`  `JSP`...

 ****  **** 

> [](https://javaguide.cn/java/jvm/classloader.html "")

 Java  `ClassLoader` `ClassLoader`  JVM `getClassLoader()` `ClassLoader`  `ClassLoader` 

 `loadClass()` 

()

### 

** Class Java **



() `-Xverify:none` 



1. Class 
2. 
3. 
4. 

![](https://oss.javaguide.cn/github/javaguide/java/jvm/class-loading-process-verification.png)

 Java 

>  JVM  Class  ****
>
>  [Java ](https://javaguide.cn/java/jvm/memory-area.html "Java ") 

 JVM 

JVM 

- `java.lang.IllegalAccessError`
- `java.lang.NoSuchFieldError`
- `java.lang.NoSuchMethodError`
- ......

### 

****

1.  Class Variables  `static`  Java 
2.  **** JDK 7 HotSpot   JDK 7 HotSpot  Class  Java [ Java  3 #75](https://github.com/fenixsoft/jvm_book/issues/75 "Java3#75")
3. "" 00Lnullfalse `public static int value=111`  value  0  111 value  final `public static final int value=111`  value  111

****  ( Java  3  7.33 )

![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/.png)

### 

****  7 

 Java 7.34 

![](https://oss.javaguide.cn/github/javaguide/java/jvm/symbol-reference-and-direct-reference.png)

Java 



### 

** ` ()` JVM  Java ()**

>  ` ()`

` ()`  ` ()` 

 5 ()

1.  `new`  `getstatic``putstatic`  `invokestatic`  4  `new` ( final )
   -  jvm  `new` 
   -  jvm  `getstatic` ()
   -  jvm  `putstatic` 
   -  jvm  `invokestatic` 
2.  `java.lang.reflect`  `Class.forname("...")`, `newInstance()` 
3. 
4.  ( `main` )
5. `MethodHandle`  `VarHandle`  2 
    `findStaticVarHandle` 
6. **[issue745](https://github.com/Snailclimb/JavaGuide/issues/745 "issue745")**  JDK8  default 

## 

>  [issue#662](https://github.com/Snailclimb/JavaGuide/issues/662 "issue#662") **[guang19](https://github.com/guang19 "guang19")** 

** Class  GC**

 3 :

1.  GC
2. 
3.  GC

 JVM  jvm 

JDK  `BootstrapClassLoader`, `ExtClassLoader`, `AppClassLoader`  JDK ()

****

-  Java 
-  Java 
- Chapter 5. Loading, Linking, and Initializing - Java Virtual Machine Specificationhttps://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.4

Web Proxy Viewer  |  New URL  |  Original Page