系统类加载器是否加载了类路径中的所有类,即使它们实际上没有被使用?

我正在使用JDK 1.6来运行一个小应用程序。 但是我设置了一个非常庞大的类路径,其中包含很多类。

当我运行应用程序时,即使它们实际上没有在我的应用程序中使用,也会加载类加载器中的所有类? 如果没有,如何强制类加载器这样做,如果是,如何避免它? 谢谢!

例如,我正在使用ant 1.7来运行我的应用程序。

最诚挚的问候,罗伯特吉

不,ClassLoader在内存中需要类时加载类。 它不会立即加载所有类,因为它可能会耗尽内存。

它们在需要时加载。 但“需要什么”的意思可能取决于类加载器。 通常,当加载一个类时,它还会检查它引用的所有类的存在 – 并且它也可能加载它们。

您可以通过向Java JVM添加选项-verbose来检查它,然后输出它加载的所有类,以及从何处输出。

据我所知,如果没有明确访问它们,则无法加载所有类。 只有在首次访问构造函数或任何其他静态成员时才加载类,此规则也适用于嵌套类。