Java,运行时类重载

标签 java class reloading

我正在寻找一种在运行时将类重新加载到 Java 中的方法。动机是为了提高调试效率。该应用程序是典型的客户端/服务器设计,同步处理请求。为每个请求实例化一个“处理程序”对象。这是我打算动态替换的唯一类。由于每个请求都处理一个新实例,因此重新加载此类不会产生任何副作用。简而言之,我不想每次该模块发生更改时都重新启动整个应用程序。

在我的设计中,Java 进程意识到 .class 文件已在请求之间的类路径中更新。发生这种情况时,“处理程序”类将被卸载并加载一个新类。

我知道我可以使用 classLoader 接口(interface)来加载新类。我似乎很难找到正确的“卸载”方法。

最佳答案

如果没有剩余的引用,类将像任何其他对象一样被卸载和垃圾收集。这意味着必须没有可访问的类实例(由特定的类加载器实例加载),并且类加载器实例本身也必须符合垃圾回收的条件。

所以基本上,您所要做的就是创建一个新的类加载器实例来加载该类的新版本,并确保不保留对旧版本实例的引用。

关于Java,运行时类重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194645/

相关文章:

java - 动态地将方法体重新分配给对象

javascript - 为什么将 componentDidMount 更改为非箭头功能会使热重载再次起作用?

java - Java中如何检查100位整数是否为质数?

java - Spring Boot 找不到 IntelliJ

java - 如何导出jcr :security in Jackrabbit?

java - 来自 Vertx Web 客户端响应正文的 react 流发布者

php - 严格标准:静态函数 model::tableStruct() 不应该是抽象的

python - 为什么(递归地)调用自身的成员方法不会进入无限循环?

java - 动态重新编译并重新加载类

debugging - 如何让IDEA像GGTS 3.5一样直接调试grails 2.3.x应用程序?