美文网首页
关于内存溢出

关于内存溢出

作者: 楼兰King | 来源:发表于2021-02-03 13:55 被阅读0次

    你是否会头疼一下问题

    1. 线上CPU突然飙升,领导让你排查,心慌怎么办?
    2. 线上发布之后内存升高,出现了FGC怎么分析?
    3. 出现了死锁,死循环该怎么排查?

    线上问题排查示例

    导出堆栈文件

    通过jmap命令或者jstack命令导出相关堆栈或者内存dump文件,这里以导出线程堆栈文件进行分析演示。

    jstack 21244 > 21244cpu.log
    # 该命令对于线上环境基本没啥影响,可以放心导出
    

    这时候导出拿到了21244cpu.log文件之后,就可以进行离线分析了。

    通过在线分析工具导入堆栈文件

    分析地址:https://heaphero.io/index.jsp
    直接导入刚才导出的文件,点击分析即可。

    分析工具首页

    在线分析工具相关截图

    分析完成之后,可以看到以下结果,非常清晰明了。

    可以看到当前等待以及线程等待的数量,并且可以看到线程的状态等。


    运行分析截图

    不仅如此,该工具可以查看是否存在死锁,以及支持火焰图,分析程序的耗时,性能等问题。


    分析火焰图

    当线上出现CPU过高的情况,可以看看具体哪些线程引起,可以查看详情了解更为细致的调用过程。


    高CPU调用分析
    实际操作结果展示:

    为了模拟内存溢出,idea中设置vm参数


    image.png

    实际模拟操作,我这里用的是上传大量文件数据解析。


    image.png
    如图,生成文件,Heap dump file created [739939909 bytes in 13.760 secs]
    在项目根目录下,使用上面的在线分析网站,直接导入即可。
    image.png

    相关文章

      网友评论

          本文标题:关于内存溢出

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