我有一個包含遺留C代碼的dll,我通過JNI調用了這個dll,但有時C代碼崩潰並導致JVM終止。有沒有辦法避免JVM崩潰?我可以處理JNI故障並讓JVM生存嗎? :)處理JNI崩潰
Q
處理JNI崩潰
10
A
回答
3
如果是C代碼崩潰,那麼阻止它將JVM加入它的唯一方法就是防止C代碼崩潰。這是編寫JNI代碼時遇到的主要危險/問題之一,因爲與使用純Java編寫的東西相比,Java和C的組合更脆弱。
4
正如Timo所說,你沒有真正的選擇,只能使JNI代碼健壯。如果你不能這樣做(例如,如果你沒有源代碼),那麼也許你可以選擇一個進程間解決方案。將JNI代碼放在一個單獨的服務器進程中,跨RMI或HTTP調用。如果崩潰,請重新啓動「服務器」,但主JVM仍然存在。很明顯,性能開銷會增加,複雜性也會增加,但也許你可以負擔得起?
相關問題
- 1. JNI崩潰:S
- 2. Android jni GetMethID崩潰
- 3. 如何從jni處理對AudioTrack的呼叫而不會崩潰?
- 4. 的Android ClassLoader.loadClass JNI崩潰
- 5. JNI - 應用程序崩潰
- 6. JVM外的JNI崩潰 - EXCEPTION_ACCESS_VIOLATION
- 7. 加載jni時jre崩潰
- 8. JNI NewStringUTF崩潰android系統
- 9. 調試JNI熱點崩潰
- 10. 如何處理硒崩潰
- 11. JavaScript事件處理崩潰
- 12. 當調用CallVoidMethod時JNI崩潰
- 13. jni代碼中的FindClass崩潰JVM
- 14. JNI本地方法導致VM崩潰
- 15. jni-wrapper在Windows上崩潰JVM
- 16. JVM崩潰attachCurrentThread JNI回調調用
- 17. 當訪問DLL時JNI崩潰
- 18. 什麼導致我的c + + JNI崩潰?
- 19. 事件處理後wxpython窗口崩潰
- 20. android - 處理崩潰的回調函數
- 21. PageFunction沒有被處理導致崩潰
- 22. Google Vision API:處理本機崩潰
- 23. Multipeer Connectivity IOS:didFinishReceivingResourceWithName錯誤處理(崩潰)
- 24. Android:處理圖像時AsyncTask崩潰
- 25. 如何使用Robotium處理崩潰
- 26. 處理信號後Perl進程崩潰
- 27. 崩潰,同時保留Excel中處理
- 28. Android - 處理應用程序崩潰
- 29. 崩潰處理程序打印回溯
- 30. 我有批處理文件崩潰