Java Jar与DLL——它们运行的类似吗?

Java Jar与DLL——它们运行的类似吗?,java,dll,jar,ram,Java,Dll,Jar,Ram,我有一个问题。您导入到主项目的外部JAR文件是否以DLL的方式运行,这样主项目只有在使用它们时才会将它们带到操作内存中,或者它们在整个项目运行时都在内存中?我这样问是因为我将要处理一个项目,我希望它是Java的,但速度很快,所以我正在寻找项目架构的优化。JAR包含类(以及其他内容),这些类在第一次使用时加载到内存中。一旦它们被加载,它们就会留在内存中(除非您专门编写一些代码来卸载它们) 因此,虽然加载过程可能会在应用程序启动时引入一些(小的)延迟,但一旦加载了所有内容,就不会因为加载类的方式而出

我有一个问题。您导入到主项目的外部JAR文件是否以DLL的方式运行,这样主项目只有在使用它们时才会将它们带到操作内存中,或者它们在整个项目运行时都在内存中?我这样问是因为我将要处理一个项目,我希望它是Java的,但速度很快,所以我正在寻找项目架构的优化。

JAR包含类(以及其他内容),这些类在第一次使用时加载到内存中。一旦它们被加载,它们就会留在内存中(除非您专门编写一些代码来卸载它们)

因此,虽然加载过程可能会在应用程序启动时引入一些(小的)延迟,但一旦加载了所有内容,就不会因为加载类的方式而出现任何性能问题


如果遵循良好的编码实践,Java可以让您创建一个高性能的应用程序。

摘自Wikipedia中关于Java Classloader的文章:

Java类加载器是JRE的一部分,它将类动态加载到JVM中。通常,类只在需要时加载。由于类加载器的存在,Java运行时系统不需要了解文件和文件系统。在学习类加载器时,委托是一个需要理解的重要概念

启动JVM时,会启动三个类加载器:

  • 引导类加载器-加载核心Java类扩展

  • 类加载器-在扩展目录中指定的代码

  • 系统类加载器-类路径中的代码


  • 所有没有被这些类加载器加载的软件库(外部jar文件)都是按需加载的。

    您现在担心细节还为时过早。现在就遵循代码组织的最佳实践,以后再考虑速度。提示:这与您的代码组织无关。可能只是为了得到澄清而复制可能的复制-在启动时加载JAR文件,然后在首次使用时加载类,这会带来不同的成本。对吗?在应用程序启动时,会加载JAR文件,但不会加载类。