美文网首页
内存泄露分析

内存泄露分析

作者: 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