1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

错别字更改

JVM->五 类加载过程->初始化->"5中情况"改为“5种情况”
This commit is contained in:
RyzeZhao 2019-10-14 22:05:45 +08:00 committed by GitHub
parent fbf80476b8
commit 94a08479ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -66,7 +66,7 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
对于`<clinit>` 方法的调用,虚拟机会自己确保其在多线程环境中的安全性。因为 `<clinit>` 方法是带锁线程安全,所以在多线程环境下进行类初始化的话可能会引起死锁,并且这种死锁很难被发现。 对于`<clinit>` 方法的调用,虚拟机会自己确保其在多线程环境中的安全性。因为 `<clinit>` 方法是带锁线程安全,所以在多线程环境下进行类初始化的话可能会引起死锁,并且这种死锁很难被发现。
对于初始化阶段虚拟机严格规范了有且只有5情况下,必须对类进行初始化: 对于初始化阶段虚拟机严格规范了有且只有5情况下,必须对类进行初始化:
1. 当遇到 new 、 getstatic、putstatic或invokestatic 这4条直接码指令时比如 new 一个类,读取一个静态字段(未被 final 修饰)、或调用一个类的静态方法时。 1. 当遇到 new 、 getstatic、putstatic或invokestatic 这4条直接码指令时比如 new 一个类,读取一个静态字段(未被 final 修饰)、或调用一个类的静态方法时。
2. 使用 `java.lang.reflect` 包的方法对类进行反射调用时 ,如果类没初始化,需要触发其初始化。 2. 使用 `java.lang.reflect` 包的方法对类进行反射调用时 ,如果类没初始化,需要触发其初始化。