java通过jni调用c++本地库函数,c++程序崩溃,如何保障jvm不会崩?
简单的说 JNI 的调用崩溃了,就会导致 JVM Crash,因为失去了Java 那一层的保护了。我不是这方面的专家,我在社区找到了一个类似的问题,希望对你有帮助,https://stackoverflow.com/questions/44062332/jvm-crashes-when-calling-jni-function-during-gc
简单的说 JNI 的调用崩溃了,就会导致 JVM Crash,因为失去了Java 那一层的保护了。我不是这方面的专家,我在社区找到了一个类似的问题,希望对你有帮助,https://stackoverflow.com/questions/44062332/jvm-crashes-when-calling-jni-function-during-gc
两种情况吧,一种是参数传入之前是需要开辟内存,Java中使用new关键字。另一种是c代码出现了内存泄露或者数组越界等情况。仔细检查下代码。
Java调用JNI的代码是在内存空间里的本地方法区执行的,本地方法区发生的某些崩溃比如内存越界等异常错误在Java层不一定能抓到,建议先排查下C++哪里崩溃,做出对应的处理。
使用try{}catch(){}处理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。