我是JPMS的初学者,无法理解其动态性。例如,在当前的JVM实例中,moduleA.jar
正在运行。 moduleA
仅需要java.base
模块。现在,我要
moduleB.jar
模块和java.sql
moduleC.jar
moduleB
执行一些代码moduleB
,java.sql
和moduleC
并释放所有资源。 可以在Java 9模块系统中完成吗?
最佳答案
这是一个高级主题。从较高的层次上讲,模块系统不是动态的,因为单个模块不能在正在运行的VM中卸载或替换。但是,您可以使用API,特别是java.lang.module.Configuration
和java.lang.ModuleLayer
来创建模块的动态配置,并在运行的VM中将它们实例化为模块层。在您的方案中,然后您可以创建一个包含模块B和C的模块层。一旦没有对它们的引用,将对这层模块进行GC /卸载。
正如我所说的,这是一个高级主题,在进入动态配置和模块层之前,花一些时间掌握基础知识(包括服务)可能更好。
关于java - 是否可以在Java 9中动态加载和卸载jdk和自定义模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46112809/