JNI创建共享内存导致JVM terminated的问题解决(segfault,shared memory,内存越界,内存泄漏,共享内存)
2024-10-20 01:32:53
此问题研究了将近一个月,最终发现由于JNI不支持C中创建共享内存而导致虚拟机无法识别这块共享内存,造成内存冲突,最终虚拟机崩溃。
注意:JNI的C部分所使用的内存也是由JVM创建并管理的,所以C创建了共享内存,而JVM不知道,产生冲突而崩溃。
解决方法:
1 采用JNI自己的共享内存创建方式(未详细调查)
2 仅通过JNI读取其他C程序(非JNI)创建的共享内存(未调查,应该没问题)
查此问题小技巧:
通过/var/log/message文件查出JVM terminated的问题原因:segfault
通过java dump文件查出具体程序运行细节问题:无法获取shared memory等日志内容
不断注释掉c中各部分代码,最终锁定创建共享内存的代码导致了此问题
最新文章
- UDP穿透NAT原理解析
- 017Makefile工程管理
- C和指针 (pointers on C)——第十四章:预处理器
- gradle中使用cobertura做代码覆盖(转)
- 日志组件一:Log4j
- easy ui Tree请求跨域数据
- Linux上程序调试的基石(2)--GDB
- plsql developer 中文乱码(???)解决办法
- 好用的函数,assert,random.sample,seaborn tsplot, tensorflow.python.platform flags 等,持续更新
- Linux(Ubuntu 16) 下Java开发环境的配置(三)------Mysql配置
- google guice @inject comments
- c# AddMonths,你了解吗?
- 08. pt-find
- bootbox弹出框插件
- Jquery 获取Checkbox值,prop 和 attr 函数区别
- 自家人不认识自家人——考你一道有趣的Javascript小题目
- 织梦dedecms整合discuz论坛的操作方法
- 网络代理-Firefox在shadow socks下面的使用
- 使用Beautifulsoup去除特定标签
- lintcode-96-链表划分
热门文章
- Spark(四十七):Spark UI 数据可视化
- JS构造函数中有return
- MiniUI表单验证实践
- linux: QT安装时出现段错误segmentation fault
- OpenCv dnn模块扩展研究(1)--style transfer
- ISO/IEC 9899:2011 条款6.7.6——声明符
- Python3基础 global 在函数内部对全局变量进行修改
- 手机wifi连上Fiddler后无网络问题解决
- MySQL数据库查找多个字段值全部相同的记录
- iOS popToViewController具体用法