zoukankan      html  css  js  c++  java
  • JNI创建共享内存导致JVM terminated的问题解决(segfault,shared memory,内存越界,内存泄漏,共享内存)

    此问题研究了将近一个月,最终发现由于JNI不支持C中创建共享内存而导致虚拟机无法识别这块共享内存,造成内存冲突,最终虚拟机崩溃。

    注意:JNI的C部分所使用的内存也是由JVM创建并管理的,所以C创建了共享内存,而JVM不知道,产生冲突而崩溃。

    解决方法:

    1 采用JNI自己的共享内存创建方式(未详细调查)

    2 仅通过JNI读取其他C程序(非JNI)创建的共享内存(未调查,应该没问题)

    查此问题小技巧:

    通过/var/log/message文件查出JVM terminated的问题原因:segfault

    通过java dump文件查出具体程序运行细节问题:无法获取shared memory等日志内容

    不断注释掉c中各部分代码,最终锁定创建共享内存的代码导致了此问题

  • 相关阅读:
    反汇编测试20191325
    20191325mystat
    20191325学习笔记8
    20191325学习笔记7
    2.3.1测试 20191325
    20191214-改进ls
    团队作业4
    20191214-反汇编测试
    stat命令的实现-mysate(必做)
    图片
  • 原文地址:https://www.cnblogs.com/aggavara/p/3270616.html
Copyright © 2011-2022 走看看