【发布时间】:2014-01-20 17:47:42
【问题描述】:
我有一个问题。您导入到主项目的外部 JAR 文件是否以 DLL 的样式运行,这样主项目只有在使用它们时才会将它们带到操作内存,或者它们在项目的整个运行时都在内存中?我问是因为我将在一个项目中工作,并且我希望它使用 Java 但速度很快,所以我正在寻找我的项目架构的优化。
【问题讨论】:
-
您为细节担心太早了。现在只需遵循代码组织的最佳实践,以后再担心速度。提示:它与你的代码组织无关。
我有一个问题。您导入到主项目的外部 JAR 文件是否以 DLL 的样式运行,这样主项目只有在使用它们时才会将它们带到操作内存,或者它们在项目的整个运行时都在内存中?我问是因为我将在一个项目中工作,并且我希望它使用 Java 但速度很快,所以我正在寻找我的项目架构的优化。
【问题讨论】:
JAR 包含在第一次使用时加载到内存中的类(除其他外)。一旦加载它们,它们就会留在内存中(除非您专门编写一些代码来卸载它们)。
因此,虽然加载过程可能会在应用程序启动时引入一些(小)延迟,但一旦加载所有内容,您将不会看到由于加载类的方式而出现的任何性能问题。
如果您遵循良好的编码习惯,Java 可以让您创建高性能应用程序。
【讨论】:
来自维基百科中关于 Java 类加载器的文章:
Java 类加载器是 JRE 的一部分,可将类动态加载到 JVM 中。通常类只按需加载。由于类加载器,Java 运行时系统不需要了解文件和文件系统。在学习类加载器时,委派是一个需要理解的重要概念。
当JVM启动时,三个类加载器被启动:
Bootstrap 类加载器 - 加载核心 Java 类扩展
类加载器 - 扩展目录中指定的代码
系统类加载器 - 类路径中的代码
所有没有被这些类加载器加载的软件库(外部 jar 文件)都是按需加载的。
【讨论】: