레거시 C 코드가 들어있는 DLL이 있습니다.이 DLL은 JNI를 통해 호출되지만 때로는 C 코드가 충돌하고 JVM이 종료됩니다. JVM 충돌을 피할 수있는 방법이 있습니까? JNI 오류를 처리하고 JVM을 생존시킬 수 있습니까? :)JNI 충돌 처리
10
A
답변
3
충돌하는 C 코드의 경우, JVM을 사용하지 못하게하는 유일한 방법은 C 코드가 처음부터 충돌하는 것을 방지하는 것입니다. 그것은 JNI 코드를 작성할 때 Java와 C의 결합이 순수 Java로 작성된 것과 비교하여 다소 취약하기 때문에 얻을 수있는 주요 위험/문제점 중 하나입니다.
4
Timo가 말했듯이, JNI 코드를 강력하게 만들 수는 없습니다. 그렇게 할 수 없다면 (예를 들어 소스가없는 경우) 프로세스 간 솔루션을 사용할 수 있습니다. JNI 코드를 별도의 서버 프로세스에 넣고 RMI 또는 HTTP 호출을 수행합니다. 충돌이 발생하면 "서버"를 다시 시작하지만 주 JVM은 남아 있습니다. 분명히 성능 오버 헤드가 있고 복잡성이 증가하지만 어쨌든 이것을 감당할 수 있습니까?
관련 문제
- 1. Java JNI : 원시 코드의 전역 변수 충돌
- 2. DomainContext의 충돌 처리
- 3. 공과 벽돌 충돌 처리
- 4. 게임 엔티티 : 충돌 처리
- 5. JVM 충돌 기본 JNI 코드로 스윙 응용 프로그램이 실행되는 동안
- 6. JNI FindClass java.lang.ClassNotFoundException
- 7. 경계 상자 충돌 처리 - 감지가 아닙니다.
- 8. 원과 선 세그먼트 사이의 충돌 처리
- 9. Sync Framework 처리 ClientInsert ServerInsert 충돌
- 10. 충돌 처리 기능이있는 C++ 해시 테이블 구현
- 11. JNI 자바 ++
- 12. UnsatisfiedLinkError JNI
- 13. JNI 성능
- 14. Java에서 충돌 로그를 캡처하는 방법
- 15. Jni 참조 표 오버플로
- 16. Java에서 C++ (JNI)로 ANSI 문자열 전달
- 17. 'JNI 글로벌 참조'란 무엇입니까
- 18. JNI 문자열 손상
- 19. JNI 응용 프로그램 상태
- 20. 정적 라이브러리 및 JNI
- 21. JNI 애플리케이션 프로파일 링
- 22. JNI - thread와 jobject의 문제
- 23. Java에서 DLL로드 - Eclipse - JNI
- 24. JNI 리스너 구현
- 25. Android - JNI guidelines
- 26. Android JNI GDB
- 27. JNI- FindClass가 null을 반환합니다.
- 28. NDK, JNI 및 libcurl
- 29. 우분투에서 JNI 라이브러리 사용
- 30. OSX의 JNI 문제