【视频笔记】线上JVM堆内存飙升,用gdb查了2周,终于排查出来了!

1、https://gceasy.io/

Universal JVM GC analyzer - Java Garbage collection log analysis made easy

 2、分析gc日志,发现有大对象分配

grep 'concurrent humongous allocation' gc.log | awk 'match($0, /allocation request: (\w+) bytes/,a){print a[1]}' |sort -nr

 

 3、async-profile采集

#开启收集
./profiler.sh start --all-user -e G1CollectedHeap::humongous_obj_allocate -f ./humongous.jfr jps

#停止收集
./profiler.sh stop -f ./humongous.jfr jps

 4、jmc分析

 查看源码,这里只分配里8字节

 async-profiler有时会失真

 

没有宿主机权限,ebpf、perf这些系统态追踪工具无法使用
对于用户态的工具,strace、ltrace无法获取调用栈

 追踪大对象的gdb脚本

 

 c++为了兼容c,会改写命名,可以用nm来查询

 

 

 

 

 

 

 

 

 参考:线上JVM堆内存飙升,用gdb查了2周,终于排查出来了!_哔哩哔哩_bilibili

posted @ 2025-05-08 22:09  fanblog  阅读(36)  评论(0)    收藏  举报