JVM工具

首先,JDK 自帶了很多監控工具,都位于 JDK 的 bin 目錄下,其中最常用的是 jconsole 和 jvisualvm 這兩款視圖監控工具。

一、jps(Java Process Status)

用于查看有權訪問的虛擬機的進程,并顯示他們的進程號
-v:列出虛擬機進程啟動時的 JVM 參數。比如:-Xms20m -Xmx50m 是啟動程序指定的 jvm 參數

二、jstat(JVM Statistics Monitoring Tool)

可以用來監視 JVM 內存內的各種堆和非堆的大小及其內存使用量、類裝載、垃圾收集、JIT 編譯等運行數據

jstat - [-t] [-h] [ []]

-gc:顯示堆各分區大小、YGC,FGC次數和時長。包括 Eden 區、兩個 Survivor 區、老年代、永久代等的容量、已用空間、GC 時間合計等信息
-gccapacity:顯示內容與 -gc 基本相同,但輸出主要關注 Java 堆各個區域使用到的最大、最小空間
-gcutil:顯示內容與 -gc 基本相同,但輸出主要關注已使用空間占總空間的百分比
-gccause:與 -gcutil 功能一樣,但是會額外輸出導致最后一次或當前正在發生的 GC 產生的原因
-gcnew:顯示新生代 GC 狀況
-gcnewcapacity:顯示內容與 -gcnew 基本相同,輸出主要關注使用到的最大、最小空間
-geold:顯示老年代 GC 狀況
-gcoldcapacity:顯示內容與 -gcold 基本相同,輸出主要關注使用到的最大、最小空間
-gcpermcapacity:顯示永久代使用到的最大、最小空間

interval 參數:用于指定輸出統計數據的周期,單位為毫秒。即:查詢間隔
count 參數:用于指定查詢的總次數

OOM案例:比較GC時長(GCT列)占運行市場的比例:
如果該比例超過 20%,則說明目前堆的壓力較大;
如果該比例超過 98%,則說明這段時期內幾乎一直在GC,堆里幾乎沒有可用空間,隨時都可能拋出 OOM 異常

內存泄露案例
每隔一段較長的時間采樣多組 OU(老年代內存量) 的最小值,如果這些最小值在上漲,說明無法回收對象在不斷增加,可能是內存泄漏導致的。
在長時間運行的 Java 程序中,我們可以運行 jstat 命令連續獲取多行性能數據,并取這幾行數據中 OU 列(Old Used,已占用的老年代內存)的最小值
然后,我們每隔一段較長的時間重復一次上述操作,來獲得多組 OU 最小值。
如果這些值呈上漲趨勢,則說明該 Java 程序的老年代內存已使用量在不斷上漲,這意味著無法回收的對象在不斷增加,因此很有可能存在內存泄漏(不再使用的對象仍然被引用,導致GC無法回收)

三、jstack(JVM Stack Trace)

用于生成虛擬機指定進程當前時刻的線程快照(虛擬機堆棧跟蹤)

參數:
-F 當正常輸出的請求不被響應時,強制輸出線程堆棧
-l 除堆棧外,顯示關于鎖的附加信息

線程快照:該進程內每條線程正在執行的方法堆棧的集合。
生成線程快照的作用:可用于定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等問題。
這些都是導致線程長時間停頓的常見原因。當線程出現停頓時,就可以用 jstack 顯示各個線程調用的堆棧情況。

在 thread dump 中,要留意下面幾種狀態

  • 死鎖,Deadlock(重點關注)
  • 等待資源,Waiting on condition(重點關注)
  • 等待獲取監視器,Waiting on monitor entry(重點關注)
  • 阻塞,Blocked(重點關注)
  • 執行中,Runnable
  • 暫停,Suspended
  • 對象等待中,Object.wait() 或 TIMED_WAITING
  • 停止,Parked

四、jmap(Memory Map)和jhat(Java Heap Analysis Tool)

jmap:打印出某個 JVM 進程內存內的所有對象的情況,一般用于查看內存占用情況。一般結合jhat使用

使用jmap -histo[:live] pid查看堆內存中的對象數目、大小統計直方圖,如果帶上live則只統計活對象,
jmap進行dump命令格式 jmap -dump:format=b,file=dumpFileName pid

五、Visual VM

六、jconsole:

一個 GUI 監視工具,可以以圖表化的形式顯示各種數據,并支持遠程連接

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

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

相關文章

VisionPro系列講解 - 03 Simulator 模擬器使用

一、VisionOS Simulator 簡介 VisionOS Simulator 模擬器是專為 VisionOS 操作系統開發的調試和測試工具。它允許開發者在沒有實際硬件設備的情況下,在計算機上模擬 VisionOS 環境,進行應用的開發、調試和優化。該模擬器幫助開發者快速驗證應用的功能和界…

huggingface是什么?2025-07-30

huggingface被我看做是ai模型的試用空間 體驗了一下image edit的功能,去除背景的功能不錯 models 模型庫 dataset 目前對我來說沒用 spaces huggingface的spaces是什么? 演示空間吧。 令人震驚的背景移除能力H200是什么?

mysql索引下推和索引失效

索引下推:ICP過濾的條件可以不限于用于索引查找(index lookup)的字段。只要存儲引擎在掃描當前索引時能夠訪問到該字段的值,就可以用它來過濾。索引可以分為聚簇索引和非聚簇索引沒有索引下推:當使用聚簇索引的時候&am…

【電賽學習筆記】MaixCAM 的OCR圖片文字識別

前言 本文是對MaixPy官方文檔 MaixCAM MaixPy 實現 OCR 圖片文字識別 - MaixPy 的項目實踐整理與拓展,侵權即刪。 功能介紹 OCR是MaixCAM中功能強大的數字文字識別模塊,可以做到輕松的識別各種數字與文字。 OCR官方例程解析 工程源碼 from maix im…

如何在生成式引擎優化(GEO)中取得成功

如果你希望您的內容出現在 AI Overviews、ChatGPT 和 Gemini 中?以下是設置 GEO 廣告系列的方法。 任何好的 GEO 活動的第一步是創造一些東西實際上想要鏈接到或引用。 GEO 策略組件 想象一些你合理預期不會直接在 ChatGPT 或類似系統中找到的體驗: 例如…

WPFC#超市管理系統(3)商品管理

超市管理系統6. 商品管理6.1 添加商品6.1 商品管理主界面6.3 修改商品6. 商品管理 將前文中的GoodsView全部改成和數據庫一致的ProductView新增枚舉類型商品類型ProductType.cs namespace 超市管理系統.Enums {public enum ProductType{水果類,休閑食品類,糧油類,飲料類,日用…

openwrt中br-lan,eth0,eth0.1,eth0.2

CPU是QCA9558 有兩個以太網接口 這個好像沒有外接交換機直接印出來的 openwrt中br-lan,eth0,eth0.1,eth0.2 https://blog.csdn.net/f2157120/article/details/119460852 這個哥用的是 鏈接: DomyWifi DW33D 路由器 CPU是QCA9558 有兩個以太網接口 因為CPU沒集成千兆交換&…

RAG實戰指南 Day 29:RAG系統成本控制與規模化

【RAG實戰指南 Day 29】RAG系統成本控制與規模化 開篇 歡迎來到"RAG實戰指南"系列的第29天!今天我們將深入探討RAG系統的成本控制與規模化部署策略。當RAG系統從原型階段進入生產環境時,如何經濟高效地擴展系統規模、控制運營成本成為關鍵挑…

React 中獲取當前路由信息

在 React 中獲取當前路由信息,根據使用的路由庫不同(如 React Router v5/v6 或 Next.js),方法也有所區別。以下是常見場景的解決方案:1. 使用 React Router v6 獲取當前路徑(pathname)、查詢參數…

Sklearn 機器學習 隨機森林 網格搜索獲取最優參數

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】 Sklearn 機器學習:隨機森林 + 網格搜索獲取最優參數實戰指南 在構建機器學習模型時,…

力扣-101.對稱二叉樹

題目鏈接 101.對稱二叉樹 class Solution {public boolean check(TreeNode l, TreeNode r) {if (l null && r null)return true;if ((l null && r ! null) || (r null && l ! null))return false;if (l.val ! r.val)return false;return check(l…

從句--02-1--done,doing ,prep 做定語

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄定語1.done(過去分詞)做定語一、過去分詞作定語的位置二、過去分詞作定語的語義特點三、過去分詞作定語與現在分詞作定語的區別四、過去分詞作…

JVM全面解析

摘要:JVM是Java程序運行的核心環境,負責解釋執行字節碼并管理內存。其核心功能包括類加載與驗證、字節碼執行優化、內存管理與垃圾回收(GC)、跨平臺支持及安全性保障。JVM架構包含程序計數器、虛擬機棧、本地方法棧、堆和方法區等…

SDC命令詳解:使用write_script命令進行輸出

相關閱讀 SDC輸出命令https://blog.csdn.net/weixin_45791458/category_12993272.html?spm1001.2014.3001.5482 write_script命令用于將設計中的屬性設置命令輸出為腳本文件(其實它并不是一個SDC命令,歸為此類只是為了方便管理)&#xff0c…

?CASE WHEN THEN ELSE END?

?CASE WHEN THEN ELSE END? 是SQL中實現條件邏輯的核心表達式,支持單字段匹配和多條件判斷,適用于數據處理、分類統計等場景。?基本語法形式?SQL中CASE表達式有兩種標準形式:1? 簡單CASE表達式?(字段直接匹配)C…

飛單誘因:管理漏洞與人性交織

飛單看似是 “員工個人行為”,實則是餐廳管理、激勵機制、外部環境等多重因素共同作用的結果。要根治飛單,需先理清背后的 “動力源”—— 員工為何選擇冒險?一、“收入失衡”:薪資與付出不匹配的 “補償心理”基層員工&#xff0…

工作筆記-----FreeRTOS中的lwIP網絡任務為什么會讓出CPU

工作筆記-----FreeRTOS中的lwIP網絡任務為什么會讓出CPU Author: 明月清了個風Date: 2025.7.30Ps:最近接觸了在FreeRTOS中使用lwIP實現的網絡任務,但是在看項目代碼的過程中出現了一些疑問——網絡任務的優先級為所有任務中最高的,并且任務框…

在 CentOS 系統上安裝 Docker

在 CentOS 系統上安裝 Docker,可按以下步驟操作:一、卸載舊版本(如存在)bashsudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-…

【CVPR2025】FlowRAM:用區域感知與流匹配加速高精度機器人操作策略學習

文章目錄FlowRAM:用區域感知與流匹配加速高精度機器人操作策略學習一、問題出在哪里?方法部分:從結構到機制,詳解 FlowRAM 的內部設計邏輯1. 動態半徑調度器:自適應注意力機制在 3D 感知中的實現2. 多模態編碼器與序列…

圖片查重從設計到實現(5)Milvus可視化工具

要通過網頁(Web)訪問和管理 Milvus 向量數據庫,可以使用官方提供的 Milvus Web UI 工具,這是一款可視化管理界面,支持查看集合、向量數據、執行基本操作等功能。以下是具體的部署和訪問方法: 一、部署 Milv…