【问题标题】:Jar vs DLL - does they run similar?Jar vs DLL - 它们运行相似吗?
【发布时间】:2014-01-20 17:47:42
【问题描述】:

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

【问题讨论】:

标签: java dll jar ram


【解决方案1】:

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

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

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

【讨论】:

  • 只是为了澄清一下 - 在启动时加载 JAR 文件和稍后在第一次使用时加载一个类有不同的成本。那是对的吗?在应用程序启动时,会加载 JAR 文件,但不会加载类。
【解决方案2】:

来自维基百科中关于 Java 类加载器的文章:

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

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

  1. Bootstrap 类加载器 - 加载核心 Java 类扩展

  2. 类加载器 - 扩展目录中指定的代码

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2020-03-02
    • 2021-09-05
    • 2010-12-17
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多