繁体   English   中英

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

[英]Does system classloader load all classes in classpath even if they're not actually used?

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

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

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

最好的问候,罗伯特·吉

不,当 memory 中需要 class 时,ClassLoader 会加载 class。 它不会一次加载所有类,因为它可能会用完 memory。

它们在需要时加载。 但是“何时需要”的含义可能取决于类加载器。 通常,当加载 class 时,它还会检查它引用的所有类的存在 - 它也可能会加载它们。

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

据我所知,如果没有显式访问所有类,就不可能加载它们。 Class 仅在其构造函数或任何其他 static 成员首次访问时加载,此规则也适用于嵌套类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM