我有一个 Java 1.6 应用程序,它通过作为接口提供的 JNI 类访问第三方本机模块。最近我们注意到原生模块中发生了 SEGFAULT,导致我们的应用程序崩溃。是否有可能捕获并处理此事件,至少在死前正确记录它?
我在kjp's answer的文章中尝试了这两种 Java 技术。都没有奏效。尝试在“SEGV”上安装信号处理程序会导致异常
VM 已使用的信号:SEGV
我安装的关闭处理程序根本无法触发,大概是因为IBM 文章所述:
关闭挂钩将不会运行,如果
调用 Runtime.halt() 方法来终止 JVM。提供 Runtime.halt() 以允许快速关闭 JVM。
指定了 -Xrs JVM 选项。
JVM异常退出,例如JVM软件产生的异常情况或强制中止。