10

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

4

2 回答 2

4

正如 Timo 所说,除了使 JNI 代码健壮之外,您别无选择。如果您不能这样做(例如,如果您没有源代码),那么也许您可以寻求进程间解决方案。将 JNI 代码放在单独的服务器进程中,进行 RMI 或 HTTP 调用。如果它崩溃,重新启动“服务器”,但主 JVM 仍然存在。显然存在性能开销和复杂性的增加,但也许你能负担得起?

于 2009-12-23T11:58:11.330 回答
3

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

于 2009-12-23T11:48:07.840 回答