java - 重新加载保留 session 的 JVM 进程

标签 java jvm

我正在使用 Java (SE) + 一些开源库开发服务器应用程序。这是一个游戏,所以我认为它有时必须更新。只要应用程序正在跟踪客户端的状态,使用它,并且还支持客户端 session (以专用线程的形式)和存储对这些播放器实例的引用的单例,我想重新加载 JVM 进程(例如安装一个新版本的 jar 文件),这样一些类和实例就不会被 GC 删除,而是挂接到新启动的进程中。

可能的情况:

我有一个游戏版本 1.0 在服务器上运行。我需要在 1.2 中添加一些新功能。但是100名玩家正在互相战斗。我需要安装version-1.2,玩家可能会感觉有些卡顿,但是即使jar的版本发生了变化,他们也应该可以继续战斗。

如何做到这一点?

最佳答案

看看 JRebel 作者对该主题的精彩总结:

http://zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/#!/

关于java - 重新加载保留 session 的 JVM 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938254/

相关文章:

java - 为什么即使对于开箱即用的 Spring Boot 管理员,Java 进程的 RES 内存也会保持缓慢增长?

java - 创建选项的通用函数

java - 如何避免使用 Java Flight Recorder 截断堆栈跟踪

java - 编译器和运行时系统如何处理java中的嵌套类型?

java - 在 java 中将 "aa"与 "aaaa"匹配会返回 2——我希望它是 3

java - 饼图的事件处理

java - 如何在 Libgdx 中对汽车施加制动

java - 如何在 Thymeleaf HTML 上使用 Java get 函数?

java - Jython 中隐藏的多线程瓶颈?

java - 带有 hh 的倒计时器 :mm:ss format in Java