通过MAT分析Java程序内存问题

查看程序内存占用

kubectl top pod -nsky

image

进入目标容器

kubectl exec -it -nsky <pod名称> bash

image

获取 java 程序进程号

jps

image

保存堆栈信息

jmap -dump:live,format=b,file=<文件保存位置> <java进程号>

image

通过 MAT 分析内存

pipeline 分析案例

1、通过 MAT 打开堆栈信息

2、打开自动生成的内存溢出分析

image

发现 ConcurrentSkipListMap 占用了大量内存

image

点开 detail

image

单击大对象

image

选择 List objects->with incoming references 查看持有该对象引用的对象

image

发现有很多的 grpc channel 对象

image

查看代码发现重复创建 channel

image

bug fixed


标题:通过MAT分析Java程序内存问题
作者:Gakkiyomi
地址:HTTP://gakkiyomi.com/articles/2023/05/17/1684286913801.html

    评论
    1 评论
    2023-06-09 11:17 回复»

    好贴,点赞一下嘿嘿

    希望分享更多的 MAT 分析 Java 程序的文章,我想多学习学习

avatar

取消