通过MAT分析Java程序内存问题
查看程序内存占用 kubectl top pod -nsky 进入目标容器 kubectl exec -it -nsky <pod名称> bash 获取 java 程序进程号 jps 保存堆栈信息 jmap -dump:live,format=b,file=<文件保存位置> <java进程号> 通过 MAT 分析内存 pipeline 分析案例 1、通过 MAT 打开堆栈信息 2、打开自动生成的内存溢出分析 发现 ConcurrentSkipListMap 占用了大量内存 点开 detail 单击大对象 选择 List objects->with incoming references 查看持有该对象引用的对象 发现有很多的 grpc channel 对象 查看代码发现重复创建 channel bug fixed