Tengo un dll que contiene código C heredado, llamo a este dll a través de JNI, pero a veces el código C falla y hace que la JVM termine. ¿Hay alguna manera de evitar el bloqueo de JVM? ¿Puedo manejar la falla JNI y dejar que la JVM sobreviva? :)Manejar un bloqueo JNI
Respuesta
Si es el código C el que falla, entonces la única manera de evitar que tome la JVM es evitar que el código C se bloquee en primer lugar. Ese es uno de los principales peligros/problemas que obtienes al escribir código JNI, ya que hace que la combinación de Java y C sea algo más frágil en comparación con algo que está escrito en Java puro.
Como ha dicho Timo, no tiene otra alternativa que hacer robusto el código JNI. Si no puede hacer eso (por ejemplo, si no tiene la fuente), entonces quizás podría optar por una solución entre procesos. Coloque el código JNI en un proceso de servidor por separado, realice llamadas RMI o HTTP. Si se bloquea, reinicie el "servidor" pero la JVM principal sobrevive. Obviamente, hay una sobrecarga de rendimiento y un aumento en la complejidad, pero tal vez puede permitirse esto?
- 1. Cómo manejar un bloqueo en un proceso iniciado mediante System.Diagnostics.Process?
- 2. Cuadro de diálogo de bloqueo desde el código JNI
- 3. ¿Utiliza JNI para cargar otra biblioteca JNI?
- 4. Bibliotecas dependientes de JNI
- 5. JNI NewByteArray memory leak
- 6. Archivo sin bloqueo lee
- 7. ¿Cómo crear un objeto con JNI?
- 8. ¿Tengo que desconectar JNI un hilo conectado?
- 9. Jni Tabla de referencia desbordamiento
- 10. Packaging JNI Libraries
- 11. JNI - multi hilos
- 12. JNI: Crear HashMap
- 13. JNI EnsureLocalCapacity - WHY?
- 14. Bloqueo sin bloqueo
- 15. jni starter pregunta
- 16. Mac + jni + java
- 17. Utilidad de JNI
- 18. Utilice C++ con JNI
- 19. FFMpeg jni en Android?
- 20. Java genéricos y JNI
- 21. Jni Tutorial para Android
- 22. ¿Enum enum en JNI?
- 23. Android JNI APK Embalaje
- 24. Cómo manejar un SIGTERM
- 25. Bloqueo de un teléfono Android (patrón de bloqueo o similar)
- 26. Transmitir un tipo largo de C++ a un jlong JNI
- 27. C++ Java wrapper construction con JNI
- 28. Bloqueo Mutex: ¿qué significa "bloqueo"?
- 29. ¿Qué tipo de mecanismo de bloqueo usa instrucción de bloqueo?
- 30. ¿Es un bloqueo (roscado) atómico?