处理JNI崩溃

时间:2009-12-23 11:38:07

标签: java jvm crash java-native-interface handle

我有一个包含遗留C代码的DLL,我通过JNI调用此DLL,但有时C代码崩溃并导致JVM终止。有没有办法避免JVM崩溃?我可以处理JNI故障并让JVM存活下来吗? :)

2 个答案:

答案 0 :(得分:4)

正如Timo所说,你没有其他选择,只能让JNI代码变得健壮。如果您不能这样做(例如,如果您没有源代码)那么也许您可以选择进程间解决方案。将JNI代码放在单独的服务器进程中,进行RMI或HTTP调用。如果崩溃,重新启动“服务器”,但主JVM仍然存在。显然存在性能开销,并且复杂性增加,但也许你可以承受这个?

答案 1 :(得分:3)

如果它是崩溃的C代码,那么阻止它使用JVM的唯一方法是防止C代码首先崩溃。这是编写JNI代码时遇到的主要危险/问题之一,因为与使用纯Java编写的东西相比,它使Java和C的组合更加脆弱。