Java 檢視JVM的狀態

2021-06-22 17:35:20 字數 598 閱讀 9600

我們寫的**都是執行在jvm上面的,雖然**的邏輯我們是知道的,但是jvm對我們來講就像是乙個黑盒。通常情況下會用qps、rt這些指標來反應程式效能和質量,但是在出現效能問題的時候我們怎麼取檢視到底是**處理問題?

這應該是最常用也是最方便的工具,用法如下:

jstat -[-t] [-h] 
通過option引數可以看到不同的資料,不過大部分都是來看gc的情況。比如:

jstat -gcutil 12728 10000 10
其他類似的option有:

另外,多數情況下full gc會跟載入的class太多有關係,jstat也可以進行檢視:

jstat -class 12728 10000 10
在執行時,如果有大量的位元組碼會被編譯成本地**的話,這部分的工作也比較耗時間(server模式下啟動較慢,但是啟動之後比client模式執行的快):

jstat -compiler 12728 10000 10

jstat -printcompilation 12728 10000 10

檢視JVM各個代的記憶體狀態

在linux執行 jmap heap pid 可以看到如下資訊 attaching to process id 23990,please wait.warning the type const char declared in the remote vm in vmstructs localhots...

jvm程序狀態檢視命令 jps

jps可以用來檢視jvm的程序狀態,啟動命令等資訊。用法 q只列印執行中的jvm程序pid。他的特性決定了不能與 mlvv 一起使用。m輸出傳遞給main方法的引數。嵌入式jvm的輸出可能為null。l將應用程式主類的完整包名稱或完整路徑名稱輸出到應用程式的jar檔案。v輸出啟動jvm時手動指定的j...

檢視設定JVM記憶體資訊

檢視設定jvm記憶體資訊 runtime.getruntime maxmemory 最大可用記憶體,對應 xmx runtime.getruntime freememory 當前jvm空閒記憶體 runtime.getruntime totalmemory 當前jvm占用的記憶體總數,其值相當於當前...