美文网首页
内存泄露分析

内存泄露分析

作者: JackyYang | 来源:发表于2017-07-27 17:19 被阅读0次

源程序技术方案:

C-JNI-Java

事件起因:

用户在进行性能测试的过程中,发现运行一段时间,出现heap中内存无法回收,导致客户端挂掉

问题排查:

核心思想-什么对象一直占用内存,没有释放

排查工具:

gc.log

jvisualvm(查看heap中内存变化)

jmap(直观查看内存中对象占用)

mat (通过饼图分析)

分析过程

1.分析内存中对象占用

jmap -histo pid


通过上图可分析:

内存中[C 及java.lang.String对象一直增长,无法回收【注:[C代表char[]】

对应代码

查看代码逻辑


通过代码查看,字符串对象collection keyi没有释放,添加释放后,重新编译,持续运行

最终结果

jmap -histo pid

jvisualvm

通过工具观察,内存回收正常,没有内存泄露

参考链接:

在 JNI 编程中避免内存泄漏

内存分析工具使用 

相关文章

网友评论

      本文标题:内存泄露分析

      本文链接:https://www.haomeiwen.com/subject/viiecxtx.html