From 94a08479cea5dfd2811016d04355f147fff97bc2 Mon Sep 17 00:00:00 2001 From: RyzeZhao <38486503+Ryze-Zhao@users.noreply.github.com> Date: Mon, 14 Oct 2019 22:05:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JVM->五 类加载过程->初始化->"5中情况"改为“5种情况” --- docs/java/jvm/类加载过程.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/jvm/类加载过程.md b/docs/java/jvm/类加载过程.md index 97385002..5a5c3418 100644 --- a/docs/java/jvm/类加载过程.md +++ b/docs/java/jvm/类加载过程.md @@ -66,7 +66,7 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚 对于`()` 方法的调用,虚拟机会自己确保其在多线程环境中的安全性。因为 `()` 方法是带锁线程安全,所以在多线程环境下进行类初始化的话可能会引起死锁,并且这种死锁很难被发现。 -对于初始化阶段,虚拟机严格规范了有且只有5中情况下,必须对类进行初始化: +对于初始化阶段,虚拟机严格规范了有且只有5种情况下,必须对类进行初始化: 1. 当遇到 new 、 getstatic、putstatic或invokestatic 这4条直接码指令时,比如 new 一个类,读取一个静态字段(未被 final 修饰)、或调用一个类的静态方法时。 2. 使用 `java.lang.reflect` 包的方法对类进行反射调用时 ,如果类没初始化,需要触发其初始化。