优秀的程序员怎么能不知道类是何时被加载进虚拟机的

编程小菜鸟

发布时间: 20-07-1115:56

开始正文前,让我们先来了解一下什么是“类的动态加载机制”。当编写好一个java类并通过编译器编译成class文件后,该类就可以在JVM虚拟机中运行了。我们将,class文件被加载到虚拟机中的过程称为“类加载机制”。“动态加载”就是在程序运行的过程中将class文件加载到虚拟机中。

我们都知道java可以做到运行时动态加载类,那你知道,编写好的类是什么时候加载到java虚拟机中的吗?

下面就让我们就一起探讨一下,java类在什么情况下会被加载到JVM虚拟机中

首先让我们先将idea作出如下配置(我使用的开发工具是idea,所有只介绍了idea的配置),从而方便我们观察类是何时被加载的。

操作步骤请按如下两图进行:

图一
图二

第一种情况:

当我们通过“new”关键字创建出一个对象实例时,会将该类加载到虚拟机中。

代码:

类的加载情况:

第二种情况:

当我们访问一个类的静态方法或者静态属性时,会将该类加载至虚拟机中。

代码:

类的加载情况:

当初始化一个类的时候会初始化该类的静态代码块,如果这其中有引用到其它类,那么被引用的类也会进行加载。

代码:

类的加载情况:

第三种情况:

通过反射(使用Class.forName()方法),也会导致类加载。

代码:

类的加载情况:

第四种情况:

当加载子类时,会先加载它的父类。

代码:

类的加载情况:

以上四种情况都会将类加载进虚拟机中。类的加载有且仅有“一次”,当一个类已经在虚拟机中存在了,就不会再进行重复加载了。

今天的分享就到这里了,如果感觉“菜鸟”写的文章还不错,记得点赞关注呦!你们的支持就是我坚持下去的动力。文章哪里写的有问题的也希望大家可以指出,我会虚心受教。

举报/反馈