2

我在我的一个 java 程序中看到奇怪的行为(文件丢失,文件过时),它必须在关机时保存一些信息(使用 shutdownhooks),然后使用 TERM 信号。

显而易见的解决方法是在修改该信息后立即保存,但出于性能原因,我想避免这种情况。

在我看来,容差值设置得非常短,而 init(我认为这是看门狗进程的名称)实际上在 JVM 可以终止之前杀死了它。我不认为这是我的应用程序的错误,因为我使用了一个测试用例,它至少等待了 20 秒但仍然几乎立即终止。您可以在关闭和注销中看到此行为,也可以在 netbeans 中看到此行为,并且它已打开的选项卡(它不会保存它们,至少在 java 7 上是最近的 7.1)。

这是我无法避免并需要解决的问题吗?

4

1 回答 1

0

telinit (8)的文档说该进程在发送and信号init之间等待 5 秒。可以通过选项更改此延迟。SIGTERMSIGKILL-t

shutdown-t (8)支持相同的选项并中继到. 因此,如果你想在你的系统上增加全局延迟,你必须根据你的发行版编辑你的配置文件或帮助文件。telinit/etc/inittab/etc/init.d

于 2011-12-28T07:41:57.640 回答