处理JNI崩溃

11

我有一个包含旧的C代码的dll,我通过JNI调用这个dll,但有时C代码会崩溃并导致JVM终止。 有没有办法避免JVM崩溃?我能处理JNI故障以让JVM存活吗? :)

2个回答

4

正如Timo所说,你没有其他选择,只能使JNI代码更加健壮。如果你无法做到这一点(例如如果你没有源代码),那么也许你可以选择跨进程解决方案。将JNI代码放在单独的服务器进程中,通过RMI或HTTP调用它。如果它崩溃了,重新启动“服务器”,但主JVM仍然存在。显然会有性能开销和复杂度增加,但也许你承受得起这个代价?


3
如果是C代码崩溃,那么防止它带着JVM一起崩溃的唯一方法就是在第一时间防止C代码崩溃。这是编写JNI代码时遇到的主要危险/问题之一,因为与纯Java编写的内容相比,它使Java和C的组合更加脆弱。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接