从Jar文件加载Java类
我有一个包含多个类的巨大jar文件,但我的应用程序中的对象图只需要两个类a和B(以及JVM所需的其他默认类)。如果是这样,Java会将整个Jar文件加载到内存中吗?我的意思是我应该创建另一个只包含类A和B的Jar文件吗?我已经阅读了Java中的类加载机制,我猜Java将只加载默认类之外的必需类,但我不确定。谢谢你抽出时间 Java会将整个Jar文件加载到内存中吗 如果将从Jar文件加载Java类,java,jvm,Java,Jvm,我有一个包含多个类的巨大jar文件,但我的应用程序中的对象图只需要两个类a和B(以及JVM所需的其他默认类)。如果是这样,Java会将整个Jar文件加载到内存中吗?我的意思是我应该创建另一个只包含类A和B的Jar文件吗?我已经阅读了Java中的类加载机制,我猜Java将只加载默认类之外的必需类,但我不确定。谢谢你抽出时间 Java会将整个Jar文件加载到内存中吗 如果将.jar文件放在类路径上-是的,JVM将把整个.jar加载到为进程分配的内存中 我的意思是我应该创建另一个只包含类A和B的Jar
.jar
文件放在类路径上-是的,JVM将把整个.jar
加载到为进程分配的内存中
我的意思是我应该创建另一个只包含类A和B的Jar文件吗
看起来它(还)没有使用,而且很可能,最好将这两个类分别打包,是的
我已经阅读了Java中的类加载机制,我猜Java将只加载默认类之外的必需类,但我不确定
尽管.jar
将被加载到内存中,但如果在应用程序中根本不使用类,Java将不会加载它们
当应用程序需要它们时,将加载它们
当类被使用/需要时,Java运行时环境调用JavaClassLoader
,这个(这些)类加载器将类动态加载到内存中
类是必需的/使用的,表示以下内容:
- 类被实例化(其对象被创建)李>
- 访问/引用该类的静态成员(方法或字段)李>
- 类通过反射进行访问李>
- 类已从命令行/shell运行