java 问题排查_JAVA问题排查笔记
一、查看jvm內存使用情況
1、jstat命令
先看看這個命令的使用方式
參數解釋:
Options — 選項,我們一般使用 -gcutil 查看gc情況
vmid??? — VM的進程號,即當前運行的java進程號
interval– 間隔時間,單位為秒或者毫秒
count?? — 打印次數,如果缺省則打印無數次
再看看options有哪些
通過命令來看每個options是干嘛的
jstat -class pid可以查看加載class的數量,及所占空間等信息。
jstat -compiler pid:顯示VM實時編譯的數量等信息。
jstat –gccapacity pid :顯示,VM內存中對象的使用和占用大小
N表示年輕代,O代表年老代,P代表永久代(截圖因為是openjdk和javaJDK不太一樣)?MN表示最小占用,MX表示最大占用 s*c, ec代表年輕代的各區,*GC是當前新生成的代內存占用量,*C是但前perm內存占用量
其余命令不再截圖演示,有興趣的可以自己執行看看
jstat -gcnew pid: new對象的信息
jstat -gcnewcapacity pid: new對象的信息及其占用量
jstat -gcold pid: old對象的信息
jstat -gcoldcapacity pid:old對象的信息及其占用量
jstat -gcpermcapacity pid: perm對象的信息及其占用量(openjdk 是gcmetacapacity)
jstat -printcompilation pid:當前VM執行的信息
jstat -gcutil pid:顯示當前各內容使用及GC執行情況
2、jmap命令
首先看命令的執行規則
3、jstack命令
以查看CPU過高為例
查看線程CPU占用:ps -mp pid -o THREAD,tid,time
將對應CPU過高的tid轉換成16進制:printf "%x\n" tid
根據16進制的tid查看堆棧信息:jstack pid |grep tid -A 30
就可以定位到具體的代碼
總結
以上是生活随笔為你收集整理的java 问题排查_JAVA问题排查笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是AAC格式
- 下一篇: youtube视频怎么下载