目录
GC 问题,其实也就是内存泄漏导致内存被占满,无法分配内存导致JVM触发GC:
问题背景:
你在做这个项⽬的时候遇到了什么问题?( OOM 问题、 GC 问题等等)你⽤过哪些分析定位 Java 故障 / 性能的⼯具?( JDK ⾃带⼯具、 MAT 、 Arthas 等等)如果项⽬遇到了 OOM 问题,你会如何排查?(常⽤ MAT )有什么办法可以监控到 JVM 的实时运⾏状态?( Arthas )⽣产环境有⼀个接⼝很慢,如何排查?(Arthas、Cat、 Pinpoint、Skyworking )CPU100% ,你是怎么处理的?( jstack 或者 Arthas )你是如何定位线上问题的?(说说⾃⼰了解的⼯具,然后根据⾯试官提示继续深⼊聊即可)项⽬中遇到了哪些线上故障,你是如何解决的?
问题摘要:
CPU 利用率高:
1、找到最耗CPU的进程(top -c),找到最耗CPU的线程(top -Hp 进程ID),jstack查看最耗CPU的堆栈信息(jstack 10765 | grep '0x2a34' -C5 --color)2.、 阿⾥开源的全能的故障诊断⼯具 Arthas :dashboard 命令查看 TOP N 线程, thread 命令查看堆栈信息。内部集成的⽕焰图⼯具 async-profiler
OOM/内存泄露:
1. JDK ⾃带的 VisualVM :使⽤ jmap 命令⽣成堆转储快照也就是 dump ⽂件,然后通过VisualVM 分析 dump ⽂件。2. MAT (Memory Analyzer Tool) : MAT 也可以分析 dump ⽂件。
GC 问题,其实也就是内存泄漏导致内存被占满,无法分配内存导致JVM触发GC: