我是JPMS的初学者,无法理解其动态性。例如,在当前的JVM实例中,moduleA.jar正在运行。 moduleA仅需要java.base模块。现在,我要

  • 以动态加载需要moduleB.jar模块和java.sql
  • moduleC.jar
  • moduleB执行一些代码
  • 从JVM卸载moduleBjava.sqlmoduleC并释放所有资源。

  • 可以在Java 9模块系统中完成吗?

    最佳答案

    这是一个高级主题。从较高的层次上讲,模块系统不是动态的,因为单个模块不能在正在运行的VM中卸载或替换。但是,您可以使用API​​,特别是java.lang.module.Configurationjava.lang.ModuleLayer来创建模块的动态配置,并在运行的VM中将它们实例化为模块层。在您的方案中,然后您可以创建一个包含模块B和C的模块层。一旦没有对它们的引用,将对这层模块进行GC /卸载。

    正如我所说的,这是一个高级主题,在进入动态配置和模块层之前,花一些时间掌握基础知识(包括服务)可能更好。

    关于java - 是否可以在Java 9中动态加载和卸载jdk和自定义模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46112809/

    10-12 22:30
    查看更多