Обработайте катастрофический отказ JNI

У меня есть dll, который содержит наследие C код, я называю этот dll через JNI, но иногда код C разрушает и заставляет JVM завершаться. Это - там способ избежать катастрофического отказа JVM? Я могу обработать отказ JNI и позволить JVM выжить?:)

10
задан Farr 23 December 2009 в 11:38
поделиться

2 ответа

Как сказал Тимо, у вас нет другой реальной альтернативы, кроме как сделать код JNI устойчивым. Если вы не можете этого сделать (например, если у вас нет исходного кода), то, возможно, вы можете пойти на межпроцессное решение. Поместите код JNI в отдельный серверный процесс, выполните вызовы RMI или HTTP. Если произойдет сбой, перезапустите "сервер", но основной JVM выживет. Очевидно, что есть накладные расходы на производительность и увеличение сложности, но, может быть, вы можете себе это позволить?

.
4
ответ дан 4 December 2019 в 02:50
поделиться

Если сбой происходит в C-коде, то единственный способ предотвратить сбой в JVM - это предотвратить сбой в C-коде в первую очередь. Это одна из главных опасностей/проблем, которые вы получаете при написании JNI кода, так как это делает комбинацию Java и C несколько более хрупкой по сравнению с тем, что написано на чистой Java.

.
3
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: