处理 JNI 崩溃
Posted
技术标签:
【中文标题】处理 JNI 崩溃【英文标题】:Handle a JNI crash 【发布时间】:2010-12-29 11:10:21 【问题描述】:我有一个包含遗留 C 代码的 dll,我通过 JNI 调用此 dll,但有时 C 代码崩溃并导致 JVM 终止。有没有办法避免JVM崩溃?我可以处理 JNI 故障并让 JVM 存活吗? :)
【问题讨论】:
【参考方案1】:正如 Timo 所说,您别无选择,只能使 JNI 代码健壮。如果您不能这样做(例如,如果您没有源代码),那么也许您可以寻求进程间解决方案。将 JNI 代码放在单独的服务器进程中,进行 RMI 或 HTTP 调用。如果它崩溃,重新启动“服务器”,但主 JVM 仍然存在。显然存在性能开销和复杂性增加,但也许你能负担得起?
【讨论】:
【参考方案2】:如果是 C 代码崩溃,那么防止它占用 JVM 的唯一方法是首先防止 C 代码崩溃。这是编写 JNI 代码时遇到的主要危险/问题之一,因为与纯 Java 编写的代码相比,它使 Java 和 C 的组合更加脆弱。
【讨论】:
以上是关于处理 JNI 崩溃的主要内容,如果未能解决你的问题,请参考以下文章