Mam dll, które zawiera starszego kodu C, ja nazywam tej dll przez JNI, ale czasami kod C ulega awarii i powoduje zakończenie JVM. Czy istnieje sposób na uniknięcie awarii JVM? Czy mogę obsłużyć błąd JNI i pozwolić JVM przetrwać? :)Obsługa awarii JNI
Odpowiedz
Jeśli to kod C, który się zawiesza, jedynym sposobem, aby uniemożliwić mu zabranie maszyny JVM, jest zapobieganie awariom kodu w pierwszej kolejności. Jest to jedno z głównych niebezpieczeństw/problemów, które pojawiają się przy pisaniu kodu JNI, ponieważ sprawia, że kombinacja Javy i C jest nieco bardziej delikatna w porównaniu z czymś, co jest napisane w czystej Javie.
Jak powiedział Timo, nie ma żadnej realnej alternatywy, tylko aby kod JNI był solidny. Jeśli nie możesz tego zrobić (na przykład, jeśli nie masz źródła), być może możesz wybrać rozwiązanie międzyprocesowe. Umieść kod JNI w oddzielnym procesie serwera, wywołaj RMI lub HTTP. Jeśli ulegnie awarii, uruchom ponownie "serwer", ale główna JVM przetrwa. Oczywiście mamy narzut wydajności i wzrost złożoności, ale może stać cię na to?
- 1. Obsługa awarii WCF i MSMQ
- 2. JNI NewByteArray przeciek pamięci
- 3. Java generics i JNI
- 4. Manipulacja ByteBuffer z JNI
- 5. Przepełnienie tabeli referencyjnej Jni
- 6. JNI, metoda wywołania boolean
- 7. Włączyć wyliczenie w JNI?
- 8. Testowanie jednostek Połączenia JNI
- 9. Mac + jni + java
- 10. Overhead Java JNI zadzwonić
- 11. Obsługa AdMob w Delphi XE5
- 12. Symbol Emotikon w ciąg.xml awarii aplikacji
- 13. jak stworzyć jni i Android.mk?
- 14. Witaj-JNI dla Androida Studio
- 15. JNI smyczki i smyczki C
- 16. tworzenie JVM z metody JNI
- 17. Blackberry 10: Android Runtime & JNI
- 18. JNI WYKRYTY BŁĄD W APLIKACJI
- 19. JNI - UnsatisfiedLinkError na natywnej metodzie
- 20. Biblioteka Scala SBT i JNI
- 21. Jak skompilować folderu telegram JNI
- 22. Zwrot jstring w programie JNI
- 23. JNI system.out i zachowanie printf
- 24. Jak utworzyć obiekt z JNI?
- 25. Jak używać tablicy jobject? (JNI)
- 26. Używanie jni w Androidzie: UNsatisfiedLinkError
- 27. EXC_BAD_ACCESS automatyczna obsługa
- 28. Obsługa Unicode w Androidzie ndk
- 29. Poproś użytkownika o wysłanie dziennika awarii po awarii na iPhonie
- 30. Obsługa UTF-8 w C++