【视频笔记】线上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来查询









浙公网安备 33010602011771号