java - 是否可以在不杀死 jvm 的情况下模拟 java 应用程序的突然重启?
问题描述
我想对应用程序的弹性进行压力测试,并在频繁断电的情况下验证数据是否一致。
由于目标是测试持久状态,只有应用程序本身在技术上不需要立即停止,例如,如果有办法以某种方式分离文件系统,或者冻结写入并复制可以执行的状态副本,无论如何都不需要诉诸从内部作为System.exit
或sigkill
从外部杀死进程。
解决方案
System.exit(1);
在功能上与 JVM 从操作系统接收到 KILL 信号时发生的情况相同。但是,ShutdownHooks
仍将执行。
Runtime.getRuntime().halt(1)
将立即停止 JVM,就好像操作系统在没有警告的情况下终止了该进程。
但是,两者都不完全等同于突然断电,这也会杀死操作系统,可能导致操作系统缓冲的磁盘写入丢失。
推荐阅读
- python - QCalendarWidget - 读取选定日期的背景颜色
- opencv - 前景的图像密度
- android - 使用会话从android向服务器POST数据
- string - 当对象创建具有连接时,String 保存在哪里?
- python - 如何将常用选项添加到子命令后*子命令的名称
- mysql - 如何制作一个像 sql 结果一样的数据透视表
- mongodb - 日期增加了一天
- hyperledger-fabric - 参与者创建 - 如何使用 golang 创建不同的参与者
- java - Tomcat:已添加其他 JAR - 上下文重新加载
- scheme - 让 vs 在延续中定义用法