查看程序内存占用
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
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于