Java虛擬機故障處理工具全指南

目錄

一、JVM故障處理工具概述

二、詳細工具解析

1. jps:虛擬機進程狀況工具

2. jstat:虛擬機統計信息監視工具

3. jinfo:Java配置信息工具

4. jmap:Java內存映像工具

5. jhat:堆轉儲快照分析工具

6. jstack:Java堆棧跟蹤工具

7. jcmd:綜合診斷命令工具

三、可視化工具

1. jconsole

2. VisualVM

四、工具使用場景總結

五、實戰建議

六、高級技巧


一、JVM故障處理工具概述

Java虛擬機(JVM)提供了豐富的故障處理工具,可以幫助開發者快速診斷和解決運行時問題。這些工具主要分為以下幾類:

  1. ??進程狀態工具??:jps

  2. ??統計監控工具??:jstat

  3. ??配置信息工具??:jinfo

  4. ??內存分析工具??:jmap, jhat

  5. ??堆棧分析工具??:jstack

  6. ??綜合診斷工具??:jcmd

  7. ??可視化工具??:jconsole, VisualVM等

二、詳細工具解析

1. jps:虛擬機進程狀況工具

??功能??:列出正在運行的虛擬機進程及其主類名、JVM參數等信息

??常用命令??:

jps -q      # 只顯示進程ID
jps -m      # 顯示傳遞給main方法的參數
jps -l      # 顯示主類的全名
jps -v      # 顯示JVM參數

??示例輸出??:

1234 Jps
5678 MyApplication

2. jstat:虛擬機統計信息監視工具

??功能??:監控類加載、內存、GC等JVM運行數據

??常用選項??:

jstat -class <pid>       # 類加載統計
jstat -gc <pid>          # GC堆行為統計
jstat -gccapacity <pid>  # 堆內存統計
jstat -gcutil <pid>      # GC統計摘要
jstat -printcompilation <pid> # JIT編譯統計

??示例??(監控GC情況,每1秒刷新一次,共10次):

jstat -gcutil 5678 1000 10

3. jinfo:Java配置信息工具

??功能??:查看和修改虛擬機參數

??常用命令??:

jinfo <pid>              # 查看所有參數
jinfo -flags <pid>       # 查看顯式設置的參數
jinfo -sysprops <pid>    # 查看系統屬性
jinfo -flag <name> <pid> # 查看特定參數值

??示例??(查看最大堆內存設置):

jinfo -flag MaxHeapSize 5678

4. jmap:Java內存映像工具

??功能??:生成堆轉儲快照、查詢堆內存信息

??常用命令??:

jmap -heap <pid>         # 顯示堆詳細信息
jmap -histo <pid>       # 顯示堆中對象統計
jmap -dump:format=b,file=heap.hprof <pid> # 生成堆轉儲文件

??示例??(生成堆轉儲文件):

jmap -dump:live,format=b,file=myapp.hprof 5678

5. jhat:堆轉儲快照分析工具

??功能??:分析jmap生成的堆轉儲文件

??使用方法??:

jhat heap.hprof

啟動后訪問 http://localhost:7000查看分析結果

??注意??:jhat功能較為基礎,生產環境建議使用MAT(Eclipse Memory Analyzer)等更強大的工具

6. jstack:Java堆棧跟蹤工具

??功能??:生成虛擬機當前時刻的線程快照

??常用命令??:

jstack <pid>            # 打印線程堆棧
jstack -l <pid>         # 打印鎖信息
jstack -F <pid>         # 強制dump(當jvm無響應時)

??示例??(將堆棧信息輸出到文件):

jstack 5678 > thread_dump.txt

7. jcmd:綜合診斷命令工具

??功能??:集成了多種診斷功能的綜合工具

??常用命令??:

jcmd <pid> help         # 查看支持的命令
jcmd <pid> VM.flags     # 查看JVM參數
jcmd <pid> VM.uptime    # 查看JVM運行時間
jcmd <pid> GC.heap_info # 查看堆信息
jcmd <pid> Thread.print # 打印線程堆棧
jcmd <pid> GC.run       # 觸發Full GC

三、可視化工具

1. jconsole

Java自帶的監控管理控制臺,可監控內存、線程、類、MBean等

啟動方式:

jconsole

2. VisualVM

功能更強大的可視化工具,支持:

  • 應用程序快照

  • CPU和內存 profiling

  • 線程分析

  • MBean查看等

四、工具使用場景總結

問題類型

推薦工具

進程查看

jps

內存泄漏

jmap, jhat, VisualVM

CPU占用高

jstack, VisualVM

死鎖

jstack -l

GC問題

jstat, jcmd GC.*

參數查看/修改

jinfo, jcmd VM.flags

綜合診斷

jcmd

五、實戰建議

  1. ??定期收集基線數據??:在系統正常時使用這些工具收集數據,作為問題診斷的基準

  2. ??組合使用工具??:如先用jps找到問題進程,再用jstat監控GC,最后用jmap生成堆轉儲

  3. ??自動化監控??:考慮將關鍵指標(jstat數據等)納入監控系統

  4. ??生產環境謹慎使用??:某些命令(如jmap -dump)會導致JVM暫停,應在低峰期使用

六、高級技巧

  1. ??遠程連接??:大多數工具支持連接遠程JVM(需配置JMX等)

  2. ??自動化分析??:結合shell腳本實現自動化診斷

  3. ??與日志結合??:將工具輸出與應用日志關聯分析

  4. ??使用替代工具??:對于復雜問題,考慮使用Arthas、MAT等更專業的工具

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919492.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【LeetCode熱題100道筆記+動畫】接雨水

題目描述 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水…

短劇小程序系統開發:構建影視娛樂新生態的基石

在移動互聯網的浪潮中&#xff0c;影視娛樂行業正經歷著深刻的變革。短劇&#xff0c;作為一種新興的內容形式&#xff0c;以其獨特的魅力和廣泛的受眾基礎&#xff0c;成為了行業發展的新亮點。而短劇小程序系統開發&#xff0c;則是構建影視娛樂新生態的基石&#xff0c;為行…

基于Pytochvideo訓練自己的的視頻分類模型

視頻分類模型簡介 ?X3D 系列模型 官方網站 https://github.com/facebookresearch/SlowFast ?提出論文? Facebook Research 的《X3D: Expanding Architectures for Efficient Video Recognition》 https://arxiv.org/pdf/2004.04730 原理 X3D 的設計思路受到機器學習中…

LidaRefer-v2論文速讀

研究背景 研究背景 3D視覺定位&#xff08;3D Visual Grounding, VG&#xff09;是一項旨在根據自然語言描述&#xff0c;在三維場景中精確定位出相應物體或區域的任務 。這項技術在人機交互領域至關重要&#xff0c;尤其是在自動駕駛、機器人技術和AR/VR等應用中&#xff0c;它…

邏輯移位與算術移位

根本的區別在于&#xff1a;它們如何對待符號位&#xff08;最高位&#xff09;。 一、邏輯移位 (Logical Shift) 無論左移、右移&#xff0c;空出的位永遠用 0 填充。主要針對無符號整數、快速乘除2的冪。 二、算術移位 (Arithmetic Shift) 左移用 0 填充、右移用符號位填充。…

內存對齊的使用和禁用

在 C 語言和 C 中&#xff0c;__attribute__((packed)) 是一種用于數據結構體的編譯器擴展屬性&#xff0c;這個屬性主要用于修改結構體的內存對齊行為。背景知識&#xff1a;結構體內存對齊在許多計算機架構中&#xff0c;編譯器會自動對數據進行對齊&#xff08;alignment&am…

SpringBoot3后端項目介紹:mybig-event

mybig-event 項目簡介 mybig-event 是一個基于 Spring Boot 的事件管理系統&#xff0c;提供用戶管理、文章發布、分類管理、文件上傳等功能&#xff0c;采用現代化的 Java 技術棧構建&#xff0c;支持高效開發和部署。 倉庫鏈接&#xff1a;https://github.com/foorgange/mybi…

week3-[分支嵌套]方陣

week3-[分支嵌套]方陣 題目描述 有 nmn\times mnm 個人站成 nnn 行 mmm 列的方陣。我們想知道第 xxx 行 yyy 列的人的某個方向有沒有人。 輸入格式 輸入共 222 行。 第 111 行輸入 444 個正整數 n,m,x,yn,m,x,yn,m,x,y。 第 222 行輸入 111 個字符為 U、D、L、R 其中之一&#…

深入理解C++ std::shared_ptr:現代C++內存管理的藝術與實踐

在C++的發展歷程中,內存管理始終是開發者面臨的核心挑戰。從C語言繼承而來的手動內存管理方式,雖然提供了極大的靈活性,卻也成為無數程序錯誤的根源。內存泄漏、懸空指針、雙重釋放等問題長期困擾著C++開發者,直到智能指針的出現改變了這一局面。作為C++11標準引入的重要特…

一個 WPF 文檔和工具窗口布局容器

一個 WPF 文檔和工具窗口布局容器、用于排列文檔 和工具窗口的方式與許多知名 IDE 類似&#xff0c;例如 Eclipse、Visual Studio、 PhotoShop 等等 AvalonDock 是一個 WPF 文檔和工具窗口布局容器&#xff0c;用于排列文檔 和工具窗口的方式與許多知名 IDE 類似&#xff0c;例…

【qml-5】qml與c++交互(類型單例)

背景&#xff1a; 【qml-1】qml與c交互第一次嘗試&#xff08;實例注入&#xff09; 【qml-2】嘗試一個有模式的qml彈窗 【qml-3】qml與c交互第二次嘗試&#xff08;類型注冊&#xff09; 【qml-4】qml與c交互&#xff08;類型多例&#xff09; 【qml-5】qml與c交互&#…

循環神經網絡(RNN)、LSTM 與 GRU (一)

循環神經網絡&#xff08;RNN&#xff09;、LSTM 與 GRU &#xff08;一&#xff09; 文章目錄循環神經網絡&#xff08;RNN&#xff09;、LSTM 與 GRU &#xff08;一&#xff09;循環神經網絡&#xff08;RNN&#xff09;、LSTM 與 GRU一、RNN&#xff08;Recurrent Neural N…

【AAOS】Android Automotive 16模擬器源碼下載及編譯

源碼下載repo init -u https://android.googlesource.com/platform/manifest -b android-16.0.0_r2 repo sync -c --no-tags --no-clone-bundle源碼編譯source build/envsetup.sh lunch sdk_car_x86_64-bp2a-eng make -j8運行效果emualtorHomeAll appsSettingsHAVCNotification…

jvm三色標記

好的&#xff0c;咱們把專業概念和生活例子結合起來&#xff0c;一步一步說清楚三色標記法&#xff1a;一、核心概念&#xff1a;用“顏色”給對象貼“狀態標簽”就像給家里的物品貼標簽&#xff0c;每種顏色代表它在“垃圾回收&#xff08;大掃除&#xff09;”中的狀態&#…

生成式AI的能力邊界與職業重構:從“百科實習生“到人機協作增強器

根據微軟最新研究&#xff0c;基于20萬條Copilot使用數據及用戶反饋&#xff0c;研究者揭示了生成式AI在實際應用中的能力邊界與職業影響。數據顯示&#xff0c;用戶使用AI助手最頻繁的任務是信息獲取&#xff08;占比近40%&#xff09;&#xff0c;其次是公眾溝通類工作&#…

java17學習筆記

Java17是一個重要的特性發布&#xff0c;也是比較常用的一個版本&#xff0c;根據 2024Java生態統計&#xff0c;Java 17、11 和 8 的用戶比例分別為 35%、33% 和 29%。它遵循了自Java10以來引入的Java發布步調&#xff0c;并于2021年 9 月 14 日發布&#xff0c;在Java16發布后…

【AI應用】修改向量數據庫Milvus默認密碼

說明&#xff1a; 1&#xff09;部署向量數據庫milvus運行一段時間后&#xff0c;想開啟密碼認證登錄attu頁面 2&#xff09;開啟密碼認證登錄&#xff0c;提示用戶和密碼不正確&#xff0c;因為默認密碼已存儲在物理機 3&#xff09;通過attu管理頁面修改向量數據庫milvus默認…

分布式系統消息隊列:可靠投遞與延時消息實戰

在分布式系統架構中&#xff0c;消息隊列&#xff08;MQ&#xff09;作為解耦服務、削峰填谷、異步通信的核心組件&#xff0c;其消息投遞的可靠性與延時消息的精準性直接影響業務系統的穩定性。本文結合實際業務場景&#xff0c;詳細解析消息投遞的全流程設計與延時消息的通用…

Java 學習筆記(基礎篇6)

面向對象基礎1. 類和對象(1) 示例&#xff1a;public class Student {String name "張三";int age 23;public void study() {System.out.println("學習 Java");}public void eat() {System.out.println("吃飯");} }public class Test {public …

光學件加工廠倚光科技:陪跑光學未來力量

在光學創新的漫漫長路上&#xff0c;總有一些看似 “不劃算” 的堅持&#xff0c;卻在悄然改寫行業的未來。倚光科技的故事&#xff0c;就始于這樣一種選擇 —— 明知光學打樣利潤微薄&#xff0c;明知上百個項目中能走到量產的寥寥無幾&#xff0c;仍愿意投入全球頂尖的設備與…