捕获 java 进程终止的时间

2023-11-26

当有人通过任务管理器或任务杀控制台命令杀死我的应用程序(java,但这并不重要)时,我如何捕获?

我知道我无法在我的应用程序中捕捉到这一点,但也许我可以通过操作系统(当然是 Windows)的一些钩子来做到这一点。也许是 Easyhook 库(http://www.codeplex.com/easyhook)可以帮助我,但我在那里找不到例子。 我们的应用程序经常在客户服务器上死掉,我只想知道是谁(或什么)杀死了它。我们确定这不是应用程序问题,似乎 java.exe 进程已从任务管理器中终止


你可以这样做:

Runtime.getRuntime().addShutdownHook(new Thread() {
  public void run() {
    // run some code
  }
});

如果虚拟机在本机代码中崩溃,则不会调用此函数。如果虚拟机停止,它也不会被调用。它也没有告诉你为什么它会关闭。看Shutdown Hooks API 的设计。我认为您无法获得比这更多的信息。

过去我经常使用Java 服务包装器。它是一个单独的进程,用于启动和重新启动 Java 进程并记录它们的输出,如果异常意外终止进程,这会很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获 java 进程终止的时间 的相关文章

随机推荐