开发者社区> 问答> 正文

[@倚贤][¥20]java通过jni调用c++本地库函数,c++程序崩溃,如何保障jvm不会崩?

已解决

java通过jni调用c++本地库函数,c++程序崩溃,如何保障jvm不会崩?

展开
收起
管理贝贝 2018-10-23 12:02:53 4274 0
4 条回答
写回答
取消 提交回答
  • 全栈工程师,从事了 12 年以 Java 语⾔为主的软件开发工作,热衷于整合框架与开发工具,关注 交互设计,喜欢写技术博客(http://codelife.me/),Linux拥趸,问题终结者。近期开始学习和关注 Elixir 函数语言,合作翻译了《Elixir 程序设计》。
    采纳回答

    简单的说 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

    2019-07-17 23:09:45
    赞同 展开评论 打赏
  • java 数据分析 数据可视化 大数据

    两种情况吧,一种是参数传入之前是需要开辟内存,Java中使用new关键字。另一种是c代码出现了内存泄露或者数组越界等情况。仔细检查下代码。

    2019-07-17 23:09:45
    赞同 展开评论 打赏
  • Java调用JNI的代码是在内存空间里的本地方法区执行的,本地方法区发生的某些崩溃比如内存越界等异常错误在Java层不一定能抓到,建议先排查下C++哪里崩溃,做出对应的处理。

    2019-07-17 23:09:45
    赞同 展开评论 打赏
  • 前一个帐号wangccsy@126.com不知道怎么的就成了企业帐号,改不成个人。所以重新注册了一个个人帐号。老程序员。精通JAVA,C#,数据库,对软件开发过程和流程熟悉。考取系统分析师,项目管理师和系统架构设计师等软件资格考试认证。愿意和大家一起前进。

    使用try{}catch(){}处理。

    2019-07-17 23:09:45
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载