一文弄懂調優基礎之如何檢視Java程序和執行緒

1、Windows

透過任務管理器檢視程序資訊

在程序頁籤中檢視Java程序,我是idea啟動,因此可以在idea下檢視相關程序

一文弄懂調優基礎之如何檢視Java程序和執行緒

此外可以在詳細資訊頁簽下Ctrl+f搜尋java

一文弄懂調優基礎之如何檢視Java程序和執行緒

透過控制檯檢視程序資訊

進入CMD,鍵入tasklist,可以檢視所有的程序資訊,包括程序ID、記憶體使用情況

一文弄懂調優基礎之如何檢視Java程序和執行緒

檢視Java相關的程序,可以新增過濾條件 tasklist | findstr “java” ,需要注意windows中字串需要使用雙引號,要不就不加也是可以的

一文弄懂調優基礎之如何檢視Java程序和執行緒

如果是在IDEA中啟動程式,可以借用idea的Terminal終端執行命令

一文弄懂調優基礎之如何檢視Java程序和執行緒

taskkill 殺死程序

殺死程序使用taskkill /pid 指定程序id,如果無法殺死,可以嘗試強制殺死taskkill /pid 程序id -t -f

一文弄懂調優基礎之如何檢視Java程序和執行緒

可以看到idea控制檯中程序已結束

一文弄懂調優基礎之如何檢視Java程序和執行緒

透過tasklist | findstr 程序id 已經無法查詢到該程序,說明程序終止成功

一文弄懂調優基礎之如何檢視Java程序和執行緒

2、Linux

ps -ef 命令檢視

Linux下可以透過ps -ef檢視所有程序資訊,具體引數說明如果不知道的可以看看菜鳥網站的簡單介紹,如下連結可以直達。

www。runoob。com/linux/linux…

一文弄懂調優基礎之如何檢視Java程序和執行緒

提供一個測試Java類,為防止執行緒執行結束,程式碼中使用了while(true)迴圈,同時防止完全佔用CPU,使用TimeUnit。SECONDS。sleep(2)睡眠2秒,讓出CPU執行時間。

一文弄懂調優基礎之如何檢視Java程序和執行緒

透過javac ThreadDemo2。java編譯ThreadDemo2。java類,生成對應的class檔案-ThreadDemo2。class;之後透過java -cp / com。lzb。concurrency。demo1。ThreadDemo2執行

一文弄懂調優基礎之如何檢視Java程序和執行緒

檢視ThreadDemo2的程序資訊ps -ef | grep ThreadDemo2(

注意需要新開一個Shell視窗

一文弄懂調優基礎之如何檢視Java程序和執行緒

kill 殺死程序

使用kill 程序id,殺死程序

一文弄懂調優基礎之如何檢視Java程序和執行緒

top 命令檢視

檢視所有程序資訊,可以使用top命令

一文弄懂調優基礎之如何檢視Java程序和執行緒

檢視指定程序的資訊,使用top -p 程序id,檢視指定程序下的所有執行緒資訊,可以使用top -H -p 程序id

具體引數描述可以參考下菜鳥網站的簡單介紹,如下連結可以直達。

www。runoob。com/linux/linux…

一文弄懂調優基礎之如何檢視Java程序和執行緒

3、Java自帶工具

jps 檢視程序id

Java自帶的命令就不區分平臺了,如果需要檢視所有的Java程序id,可以使用jps

一文弄懂調優基礎之如何檢視Java程序和執行緒

jstack 檢視程序中的執行緒狀態

檢視某個Java程序的執行緒狀態,可以結合jps一起使用,先透過jps查詢程序的id,然後透過jstack查詢程序中的所有執行緒的狀態,需要注意的是jstack查詢的執行緒狀態,是該程序在查詢時刻的執行緒狀態(瞬時態)

資訊比較多並未展示完全

一文弄懂調優基礎之如何檢視Java程序和執行緒

一文弄懂調優基礎之如何檢視Java程序和執行緒

jconsole 圖形化介面

jconsole是jdk自帶的監控記憶體、執行緒、類等資源情況的圖形化介面。

在windows 環境下,可以直接雙擊執行jdk安裝目錄bin資料夾下的jconsole。exe檔案

一文弄懂調優基礎之如何檢視Java程序和執行緒

如果是本地Java程序,可以勾選本地程序,然後再本地程序中找到你的Java程序,選中後點擊連線即可

一文弄懂調優基礎之如何檢視Java程序和執行緒

本地連線不需要密碼驗證,選擇不安全連線即可,如下即為jconsole的介面

一文弄懂調優基礎之如何檢視Java程序和執行緒

如果java程序執行在遠端Linux伺服器上,則需要使用遠端連線

一文弄懂調優基礎之如何檢視Java程序和執行緒

遠端連線需要ip port username password等資訊,此時我們需要使用如下方式執行Java類

java -Djava。rmi。server。hostname=‘ip地址’ -Dcom。sun。management。jmxremote -Dcom。sun。management。jmxremote。port=‘埠’ -Dcom。sun。management。jmxremote。ssl=是否安全連線 -Dcom。

sun。management。jmxremote。authenticate=是否需要認證 java類

連結:https://juejin。cn/post/7035630376475164680