在不丢失状态的情况下重新编译和重新启动java

在不丢失状态的情况下重新编译和重新启动java,java,Java,假设我有一个应用程序,它需要实时跟踪某事物的状态。跟踪是通过我从外部进程获取的事件进行的。我正在开发它,需要快速修复处理与类结构无关的事件的类成员函数 为此,我需要重新编译并重新启动,在此期间,我的应用程序状态将丢失。我可以将状态保存在文件或其他文件中,但是: 事件是时间关键的,我甚至不能承受一毫秒的损失,因为不处理事件是不可接受的。我想知道是否有办法解决这个问题 编辑: 我使用类来跟踪数据,但它们的生命周期从来不会超过一分钟,而且在这之后它们实际上也不会存储在任何地方,它们会被删除。数据存储在

假设我有一个应用程序,它需要实时跟踪某事物的状态。跟踪是通过我从外部进程获取的事件进行的。我正在开发它,需要快速修复处理与类结构无关的事件的类成员函数

为此,我需要重新编译并重新启动,在此期间,我的应用程序状态将丢失。我可以将状态保存在文件或其他文件中,但是:

事件是时间关键的,我甚至不能承受一毫秒的损失,因为不处理事件是不可接受的。我想知道是否有办法解决这个问题

编辑:


我使用类来跟踪数据,但它们的生命周期从来不会超过一分钟,而且在这之后它们实际上也不会存储在任何地方,它们会被删除。数据存储在类实例成员中,我不能忘记它们中的任何一个


请注意,我还在多线程中使用这些类。

您可能希望实现这些类


但是请注意,重新加载类并不会神奇地将原始类的实例转换为修改后的类的实例,相反,您将获得一个新类,可以从中创建新实例。如果您只使用类来处理数据,而不存储数据,那么您应该不会有问题。

您可以回答,这个问题太广泛了。您可能希望根据下面的答案研究动态类重新加载,或者研究允许您一次运行多个版本的应用程序的不同部署模型。您真的确定要在运行时生成代码吗?为什么你不能实施一些策略模式来处理这些事件?代码是注入的吗?对不起,它很广泛,因为我不知道从哪里开始搜索,甚至不知道在这种情况下谷歌应该做什么。我可以实现什么样的策略模式?编写一个简单的小流程来捕获事件并将其写入文件。处理事件的更大、更复杂的应用程序可以按正常方式重新编译,并且不会丢失任何事件。它们将在文件中。我正在使用类来跟踪数据,但它们的生命周期从未超过一分钟,而且在这之后它们从未实际存储在任何位置,并且它们被删除。@Nirri:那么它应该可以正常工作;您只需保留对最近加载的类对象的引用,并在需要时使用该引用创建新实例。