【JDK內置工具】常用工具和實戰指令

作者:唐叔在學習
專欄:唐叔的Java實踐
關鍵詞: #JDK工具 #Java性能調優 #JVM調優 #內存泄漏排查 #線程死鎖分析 #Java開發工具 #線上問題排查 #Java診斷工具

Hello,大家好,我是愛學習的唐叔。作為Java開發者,JDK內置工具是我們日常開發的"瑞士軍刀"。唐叔將通過本文給熱愛學習的小伙伴們詳細介紹jps、jstack、jmap、jstat等核心工具的使用場景和實戰技巧,幫你快速定位內存泄漏、線程死鎖等疑難雜癥。掌握這些工具,讓你從"API調用工程師"進階為真正的Java問題解決專家!

文章目錄

    • 一、開篇:為什么說JDK工具是Java程序員的必修課?
    • 二、基礎篇:這些工具你必須會(附實戰命令)
      • 2.1 jps - Java進程偵探
      • 2.2 jstack - 線程快照分析專家
      • 2.3 jmap - 內存泄漏克星
    • 三、進階篇:性能調優雙雄
      • 3.1 jstat - JVM監控儀表盤
      • 3.2 jinfo - JVM參數調參師
    • 四、可視化工具:圖形化更高效
      • 4.1 JConsole - 入門級監控
      • 4.2 VisualVM - 全能型選手
    • 五、實戰問題排查指南
      • 5.1 CPU 100%問題三步走
      • 5.2 OOM內存泄漏排查流程
    • 六、總結

一、開篇:為什么說JDK工具是Java程序員的必修課?

各位CSDN的小伙伴們大家好,我是你們的老朋友唐叔!最近在帶團隊做Code Review時,發現很多工作3-5年的同學對JDK內置工具的使用還停留在java -version階段,遇到生產問題就抓瞎。今天咱們就來好好盤一盤這些被嚴重低估的神器!

📌 真實案例:上周我們一個日活百萬的電商應用突然CPU飆到99%,新人小王折騰半天無果。我用了3分鐘運行jstack+top -Hp組合拳,直接定位到優惠券服務的線程死鎖問題。這就是工具的力量!

二、基礎篇:這些工具你必須會(附實戰命令)

2.1 jps - Java進程偵探

jps -lv

這個命令相當于Linux的ps命令Java特供版,能顯示:

  • 主類全名
  • JVM啟動參數
  • 進程ID

實戰場景:當服務器跑著多個Java應用時,快速找到目標進程PID

2.2 jstack - 線程快照分析專家

jstack -l <pid> > thread_dump.log

核心價值

  • 分析線程死鎖(查找deadlock關鍵詞)
  • 定位CPU飆升問題(結合top -Hp找出高CPU線程)
  • 檢查線程阻塞情況

🔥 熱點技巧:線上問題建議連續抓3次dump(間隔10秒),用jstack對比分析

2.3 jmap - 內存泄漏克星

jmap -heap <pid>       # 堆內存概況
jmap -histo:live <pid> # 對象統計
jmap -dump:format=b,file=heap.hprof <pid> # 生成堆轉儲文件

典型應用

  • 發現內存泄漏(觀察特定對象數量異常增長)
  • 分析堆內存分布
  • 配合MAT/Eclipse Memory Analyzer深度分析

?? 注意:生產環境慎用-dump,可能引發STW停頓!

三、進階篇:性能調優雙雄

3.1 jstat - JVM監控儀表盤

jstat -gcutil <pid> 1000 5

輸出示例:

S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00  25.43  78.23  65.43  95.12  90.11   15     0.250    3     0.480   0.730

關鍵指標解讀

  • YGC/YGCT:Young GC次數/耗時
  • FGC/FGCT:Full GC次數/耗時
  • O:老年代使用率

3.2 jinfo - JVM參數調參師

jinfo -flags <pid>          # 查看所有參數
jinfo -flag MaxHeapSize <pid> # 查詢特定參數

使用場景

  • 驗證運行期參數是否生效
  • 動態調整部分參數(僅限于可寫參數)

四、可視化工具:圖形化更高效

4.1 JConsole - 入門級監控

適合場景

  • 開發環境基礎監控
  • 堆內存/線程/類的實時查看

4.2 VisualVM - 全能型選手

插件推薦

  • Visual GC:直觀看GC過程
  • MBeans:監控JMX指標
  • BTrace:動態追蹤(需謹慎)

💡 唐叔建議:阿里開源的Arthas現在更香,支持熱修復!

五、實戰問題排查指南

5.1 CPU 100%問題三步走

  1. top -Hp <pid> 找高CPU線程
  2. printf "%x\n" <tid> 轉16進制
  3. jstack <pid> | grep -A 20 <nid> 定位代碼

5.2 OOM內存泄漏排查流程

  1. jmap -histo:live <pid> 初步篩查
  2. jmap -dump 生成堆快照
  3. 用MAT分析支配樹

六、總結

以上就是本期唐叔的分享內容啦,讓我們來簡單重點回顧下吧:

  1. 診斷線程問題 → jps + jstack
  2. 分析內存問題 → jmap
  3. 實時監控 → jstat
  4. 參數驗證 → jinfo
  5. 可視化 → jconsole + VisualVM

大家在工作中遇到過哪些棘手的JVM問題?歡迎評論區留言討論~ 覺得有用的話別忘了點贊收藏!


往期Java文章推薦:

  • Arthas:Java性能優化分析的終極利器
  • 新手向:IDEA代碼調試技巧指南

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

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

相關文章

一站式PDF轉Markdown解決方案PDF3MD

簡介 什么是 PDF3MD &#xff1f; PDF3MD 是一個現代化、用戶友好的網絡應用程序&#xff0c;旨在將 PDF 文檔轉換為干凈、格式化的 Markdown 文本。它提供了高效的轉換工具&#xff0c;支持多種文件格式之間的轉換。 主要特點 PDF 轉 Markdown&#xff1a;能夠將 PDF 文檔轉…

RocketMQ學習系列之——MQ入門概念

一、什么是MQMQ&#xff08;Message Queue&#xff0c;消息隊列&#xff09;是一種能夠實現跨進程消息傳輸&#xff0c;并且消息緩存符合隊列特性的組件。二、MQ的作用異步&#xff1a;消息發送方無需等待消息接收方收到消息&#xff0c;發送方將消息成功發送到 MQ 之后即可無阻…

血條識別功能實現及原理

從零開始學Python圖像處理 - 血條識別 從實際問題中能快速的學習特定技能&#xff0c;通過完成一個能自動刷怪的工具&#xff0c;達成快速學習python圖像處理和識別。 自動刷怪需要先識別怪物&#xff0c;在游戲中怪物類型很多&#xff0c;同時在移動中形態會一直發生變化&…

網絡地址和主機地址之間進行轉換的類

#pragma once #include "Common.hpp" // 網絡地址和主機地址之間進行轉換的類class InetAddr { public:InetAddr(){}InetAddr(struct sockaddr_in &addr) : _addr(addr){// 網絡轉主機_port ntohs(_addr.sin_port); // 從網絡中拿到的&#xff01;網絡序列// _i…

《Python 項目 CI/CD 實戰指南:從零構建自動化部署流水線》

??《Python 項目 CI/CD 實戰指南:從零構建自動化部署流水線》 一、引言:為什么 Python 項目需要 CI/CD? 在現代軟件開發中,CI/CD(持續集成 / 持續部署)已成為不可或缺的工程實踐。它不僅提升了開發效率,還顯著降低了部署風險。對于 Python 項目而言,CI/CD 的價值尤…

AJAX 技術

AJAX全稱是 Asynchronous JavaScript and XML ( 異步的JavaScript 和 XML )&#xff0c;使用該技術后&#xff0c;可以實現不刷新整個網頁&#xff0c;與服務器進行異步通信并更新部分網頁。一&#xff09;為什么需要AJAX?傳統網頁在與服務器通信時&#xff0c;需要刷新整個頁…

Python爬蟲實戰:研究NLTK庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡新聞已成為人們獲取信息的主要來源之一。每天產生的海量新聞文本蘊含著豐富的信息和知識,但也給信息獲取和分析帶來了挑戰。如何從大量非結構化的新聞文本中自動提取有價值的信息,識別熱點話題和趨勢,成為當前自然語…

ARM 學習筆記(二)

參考文獻&#xff1a;《ARM ArchitectureReference Manual ARMv7-A and ARMv7-R edition》1、MMU 1.1 背景早期的內存是比較小的&#xff0c;一般是幾十k&#xff0c;不過相應的程序也是比較小的&#xff0c;這時程序可以直接加載到內存中運行。后來為了支持多個程序的并行&…

Github 貪吃蛇 主頁設置

自動化腳本頂部元信息觸發條件&#xff08;on:&#xff09;作業&#xff08;jobs:&#xff09;步驟&#xff08;steps:&#xff09;1. 生成 SVG2. 推送到 output 分支Commit & Push在 README 里引用參考&#xff1a;https://github.com/Platane/Platane/tree/master 首先寫…

關于Spring RestTemplate

? 一、概述RestTemplate 是 Spring Framework 提供的一個同步 HTTP 客戶端工具&#xff0c;用于簡化與 RESTful API 的交互。它封裝了底層 HTTP 通信細節&#xff0c;提供了統一的 API 來發送各種 HTTP 請求&#xff08;GET、POST、PUT、DELETE 等&#xff09;&#xff0c;并自…

異步解決一切問題 |消息隊列 |減少嵌套 |hadoop |rabbitmq |postsql

設計準則“為什么要考慮這個問題”The forward logic is only about 10% of your code, everything else is 90%.主流邏輯 10%保障擴容和穩健的代碼設計90%同步代碼就是綁在一個繩上的螞蚱異步就是實現了解耦這個異步或許有點類似于--一些分布式數據的處理 設計如何實現的呢?…

Spring AI 項目實戰(十八):Spring Boot + AI + Vue3 + OSS + DashScope 實現高效語音識別系統(附完整源碼)

系列文章 序號 文章名稱 1 Spring AI 項目實戰(一):Spring AI 核心模塊入門 2 Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼) 3 Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼) 4

指針數組和數組指針的應用案例

1. 指針數組應用&#xff1a;查找最長字符串用指針數組存儲若干字符串&#xff0c;編寫函數找出其中最長的字符串&#xff08;若有多個&#xff0c;返回第一個&#xff09;。#include <stdio.h> #include <string.h>// 函數原型&#xff1a;找出最長字符串 const c…

MCU進入低功耗模式前的引腳處理原則和方法 --> 以最小化低功耗電流

在MCU進入低功耗模式(如Sleep, Stop, Standby, Deep Sleep等)前,精心處理每一個GPIO引腳的狀態是最大限度降低功耗電流的關鍵一步。懸空或配置不當的引腳是導致“漏電”的常見原因。以下是處理引腳以達到最小低功耗電流的原則和方法: ?? 核心原則 避免浮空輸入: 浮空(…

張 關于大語言模型(LLM)置信度研究的經典與前沿論文 :溫度縮放;語義熵;自一致性;事實與反思;檢索增強;黑盒引導;

關于大語言模型(LLM)置信度研究的經典與前沿論文 :溫度縮放;語義熵;自一致性;事實與反思;檢索增強;黑盒引導; 目錄 關于大語言模型(LLM)置信度研究的經典與前沿論文 :溫度縮放;語義熵;自一致性;事實與反思;檢索增強;黑盒引導; 一、校準方法:讓模型概率更貼近真實正確…

ICT測試原理之--什么是假短

ICT測試原理之–什么是假短 文章目錄ICT測試原理之--什么是假短一、假短的由來防止假短二、無法檢測的短路示例解決無法檢測的短路調試短路文件調試意外斷路調試意外短路三、調試假短報告短路和斷路報告假短報告短路設備/引腳功能性短路測試功能性短路測試的語法一、假短的由來…

三種深度學習模型(LSTM、CNN-LSTM、貝葉斯優化的CNN-LSTM/BO-CNN-LSTM)對北半球光伏數據進行時間序列預測

代碼功能 該代碼實現了一個光伏發電量預測系統&#xff0c;采用三種深度學習模型&#xff08;LSTM、CNN-LSTM、貝葉斯優化的CNN-LSTM&#xff09;對北半球光伏數據進行時間序列預測&#xff0c;并通過多維度評估指標和可視化對比模型性能。 算法步驟 1. 數據預處理 數據導入&am…

Typecho+阿里云CDN完整配置:防止DDoS攻擊與IP暴露

文章目錄 Typecho使用阿里云CDN保護網站真實IP地址的完整指南 背景與問題分析 技術選型與方案設計 詳細實施步驟 第一步:阿里云CDN基礎配置 第二步:DNS解析設置 第三步:源站服務器防護配置 Nginx服務器配置 防火墻配置(以Ubuntu為例) 第四步:Typecho配置調整 高級防護措施…

[硬件]運算放大器對相位噪聲的影響與設計提示

運算放大器對相位噪聲的影響與設計提示 文章目錄運算放大器對相位噪聲的影響與設計提示運放影響位噪聲的主要因素如何最小化運放對相位噪聲的影響總結運算放大器是常用的模擬電路元器件&#xff0c;通常用于放大信號&#xff0c;增強驅動。但是當使用運放放大一個信號時&#x…

github jekyll+chirpy主題搭建博客

github jekyllchirpy主題搭建博客 標簽&#xff1a;后端、blog、jekyll 全文鏈接 本文簡要介紹了如何基于 GitHub Pages、Jekyll 及 Chirpy 主題搭建個人博客的流程和注意事項。 主要內容 GitHub Pages 站點簡介 可免費搭建個人博客&#xff0c;支持自定義域名&#xff0c;適…