繁体   English   中英

从 Jar 文件加载 Java 类

[英]Java class loading from Jar file

我有一个包含多个类的巨大 jar 文件,但是我的应用程序中的对象图只需要两个类 A 和 B(以及 JVM 所需的其他默认类)。 如果是这种情况,Java 会将整个 Jar 文件加载到内存中吗? 我的意思是我应该创建另一个只有 A 类和 B 类的 Jar 文件吗? 我已经阅读了Java中的类加载机制,我猜Java除了默认类之外只会加载所需的类,但我不确定。 谢谢你的时间。

Java 会将整个 Jar 文件加载到内存中吗?

如果您将该.jar文件放在类路径上 - 是的,JVM 会将整个.jar加载到为进程分配的内存中;

我的意思是我应该创建另一个只有 A 类和 B 类的 Jar 文件吗?

似乎它(还)没有使用Project Jigsaw 的 JPMS ,而且很可能,最好将这两个类分开打包,是的;

我已经阅读了Java中的类加载机制,我猜Java除了默认类之外只会加载所需的类,但我不确定。

尽管事实上.jar将被加载到内存中,如果在您的应用程序中根本不使用它们,Java 将不会加载它们。

它们在应用程序需要时加载。

在使用/需要类的那一刻,Java 运行时环境调用 Java ClassLoader ,这个(这些)类加载器动态地将类加载到内存中。

类是必需的/使用的,意思是这样的:

  • 类被实例化(它的对象被创建);
  • 访问/引用该类的静态成员(方法或字段);
  • 类通过反射访问;
  • 类已从命令行/shell 运行。

暂无
暂无

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

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