我正在使用JDK 1.6来运行一个小应用程序。但是我设置了一个非常庞大的类路径,其中包含很多类。
当我运行应用程序时,即使它们实际上没有在我的应用程序中使用,也会加载类加载器中的所有类?如果没有,如何强制类加载器这样做,如果是,如何避免它?谢谢!
例如,我正在使用ant 1.7来运行我的应用程序。
最诚挚的问候, Robert Ji
答案 0 :(得分:6)
不,ClassLoader在内存中需要类时加载类。它不会立即加载所有类,因为它可能会耗尽内存。
答案 1 :(得分:2)
需要时加载它们。但“需要什么”的意思可能取决于类加载器。通常,当一个类被加载时,它还会检查它引用的所有类的存在 - 并且它也可能加载它们。
您可以通过将选项-verbose
添加到Java JVM来检查它,然后输出它加载的所有类,以及从哪里输出。
答案 2 :(得分:1)
据我所知,如果没有明确访问它们,则无法加载所有类。只有在首次访问构造函数或任何其他静态成员时才加载类,此规则也适用于嵌套类。