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

时间:2011-06-07 13:44:53

标签: java classpath classloader

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

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

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

最诚挚的问候, Robert Ji

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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