Java中的类是什么时候被加载到虚拟机?

2025-04-13 04:09:32
推荐回答(4个)
回答1:

这个问题java的比较核心的一个难题,我就针对问题做简要回答,不做深入讨论了:
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。

2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。

明白1,2点就够了,再深入要等一段才能明白了。

回答2:

类是第一次被使用时加载的。

import语句就是一个语法糖,是为了不写那一长串的全限定名。

回答3:

java运行的时候加载的,结束后被收回

回答4:

看到你这个问题,在这里我说说的我看法, 你大概没有完全理解编译期和运行期的作用。编译期只是编译器对Java的源文件进行语法检查,正解则将文件编译成Class文件, 错误时,就会提示错误信息,编译就不能通过。类加载器是专门加载类文件的,即编译完成后的Class文件。程序在运行的时候就需要类加载器去加载各种类文件,类文件只需加载一次,即已经加载的不会再被加载。