JVM:工具

JVM

  • jps
  • jstat
  • jmap
  • jhat
  • jstack
  • jconsole
  • jvisualvm

在這里插入圖片描述

jps

jps( Java Virtual Machine Process Status Tool ),是 JDK 中的一個命令行工具,用于列出當前正在運行的 JVM 實例的信息。其對于監控和管理運行在多個 JVM 上的 Java 應用程序特別有用,因為可以快速提供 JVM 進程的標識符( PID )和主類名(或 JAR 文件名),以及其他可能的信息,如 JVM 參數。

基本語法

jps [options] [hostid]options:可選參數,用于指定輸出信息的詳細程度。
hostid:RMI 注冊表中注冊的主機名,支持遠程監控主機上的 Java 程序(需要安裝 jstatd )。如果不指定,則默認為本地主機。常用選項:
-l:長格式輸出,包括 JVM 的完整命令行參數
-m:輸出傳遞給 main 方法的參數
-v:輸出 JVM 的啟動參數
-q:只輸出進程 ID ,不輸出其他信息
-h 或 --help:顯示幫助信息
--version:顯示版本信息

jstat

jstat(JavaVirtualMachine statistics monitoring tool),是 JDK 中的一個輕量級小工具,主要用于監控 Java 應用程序的資源和性能,可以通過 JVM 內建的指令對 Java 應用程序的堆內存、類加載、JIT 編譯等信息進行實時監控。

基本語法

jstat [option] vmid [interval[s|ms]] [count]option:需要監控的數據類型,如 -gc 、-class 等。
vmid:JVM 的標識符,通常是 Java 進程的 ID ( pid )。
interval:采樣間隔,單位可以是秒( s )或毫秒( ms ),默認為毫秒。
count:采樣次數,如果省略,則默認會一直采樣直到用戶中斷。常用選項:
-class:監控類裝載、卸載的數量,以及類裝載器的總耗時
-compiler:顯示 JIT 編譯的相關信息
-gc:監控與垃圾回收相關的堆內存統計信息
-gccapacity:監控各個內存區域(年輕代、老年代、元空間等)的容量及其當前大小
-gccause:監控垃圾回收的相關信息,包括上一次 GC 和當前(如果有)的 GC 原因
-gcnew:顯示新生代的詳細信息
-gcnewcapacity:顯示新生代對象的信息及其占用量,包括各個內存區域的最大容量、當前容量等信息
-gcold:顯示老年代 GC 的詳細情況
-gcoldcapacity:顯示老年代的大小
-gcutil:顯示垃圾回收信息,但主要以百分比形式展示各個內存區域的使用情況
-gcmetacapacity:顯示元空間中對象的信息及其占用量
-printcompilation:輸出 JIT 編譯的方法信息,包括編譯的方法名稱、編譯類型等信息
-t:可以在打印的列加上 Timestamp 列,用于顯示系統運行的時間
-h:可以在周期性數據輸出時,指定輸出多少行以后輸出一次表頭,方便閱讀

jmap

jmap( Java Virtual Machine Memory Map ),是 JDK 中的一個命令行工具,用于生成 JVM 的堆轉儲快照( dump 文件),以及查看堆內對象實例的統計信息、類加載器的信息以及 finalizer 隊列等。

基本語法

jmap [option] <pid>  
jmap [option] <executable> <core>  
jmap [option] [server-id@]<remote-hostname-or-IP>option:可選參數,用于指定要執行的操作,如查看堆內存信息、生成堆轉儲快照等。
pid:要打印配置信息的 JVM 的進程 ID 。
executable:產生 core dump 的 Java 可執行文件。
core:需要打印配置信息的 core dump 文件。
server-id:可選的唯一 ID ,用于在相同的遠程主機上標識多個調試服務器。
remote-hostname-or-IP:遠程調試服務器的 IP 地址或主機名。常用選項:
-heap:打印 Java 堆的概要信息,包括使用的垃圾回收算法、堆配置參數和各代中堆內存的使用情況
-histo[:live]:打印 Java 堆中對象的直方圖,包括每個類的對象數量、占用內存大小和類的完全限定名。如果指定了 :live ,則只統計存活的對象
-clstats:打印類加載器的統計信息,包括類加載器的名稱、已加載的類的數量、所占用的字節數、父類加載器地址等信息
-finalizerinfo:打印在 F-Queue 隊列中等待 Finalizer 線程執行 finalize 方法的對象信息
-dump:<dump-options>:生成 Java 堆轉儲快照文件,該文件可以使用 MAT( Memory Analyzer Tool )、VisualVM 或 jhat 等工具進行查看
-F:當指定的 Java 進程沒有響應時,強制 jmap 執行 dump 或 histo 操作

jhat

jhat(Java Virtual Machine Heap Analysis Tool),是 JVM 中的一個堆轉儲快照分析工具,用于分析由 jmap 或其他工具生成的 heapdump 文件。jhat 通過建立一個 HTTP/HTML 服務器,讓用戶可以在瀏覽器上查看分析結果。

基本語法

jhat [options] heap-dump-fileoptions:用于調整jhat 的行為或輸出。
heap-dump-file:要分析的 Java 堆轉儲文件的路徑。常用選項:
-J<flag>:可以在啟動 JVM 時傳入一些啟動參數
-stack false|true:關閉跟蹤對象分配調用堆棧。默認值為 true ,若分配位置信息在堆轉儲中不可用,則必須將此標志設置為 false 。
-refs false|true:關閉對象引用跟蹤。默認情況下,返回的指針是指向其他特定對象的對象
-port port-number:設置 jhat HTTP 服務器的端口號,默認值是7000
-exclude exclude-file:指定對象查詢時需要排除的數據成員列表文件
-baseline exclude-file:指定一個基準堆轉儲( baseline heap dump )。在兩個 heap dump 文件中有相同 object ID 的對象會被標記為不是新的( marked as not being new ),其他對象被標記為新的( new )。在比較兩個不同的堆轉儲時特別有用
-debug int:設置 debug 級別,0表示不輸出調試信息。值越大則表示輸出更詳細的 debug 信息
-version:啟動后只顯示版本信息就退出

jstack

jstack( Java Stack Trace ),是 JVM 中的一個堆棧跟蹤工具,用于生成 JVM 當前時刻的線程快照(當前 JVM 內每一條線程正在執行的方法堆棧的集合),適用于 Java 應用程序、分析性能問題、診斷死鎖等場景。

基本語法

jstack [option] pid  
jstack [option] executable core  
jstack [option] [server-id@]remote-hostname-or-IPoption:可選的命令行參數選項。
pid:目標 Java 進程的進程 ID 。
executable:Java 可執行文件。
core:core dump 文件。
[server-id@]remote-hostname-or-IP:遠程調試服務的地址,其中 server-id 是可選的,用于指定遠程調試服務器的唯一標識符。常用選項:
-l:長列表模式,顯示關于鎖的附加信息
-m:混合模式,打印 Java 和本地 C/C++ 框架的所有棧信息
-F:當正常輸出的請求不被響應時,強制輸出線程堆棧信息
-h 或 -help:顯示幫助信息

jconsole

jconsole( Java Monitoring and Management Console ),是一個基于 JMX(Java Management Extensions)的可視化監視和管理工具,允許用戶連接到 Java 應用程序,并監控其內存使用、線程活動、類加載情況、垃圾回收行為等關鍵性能指標。

基本語法

jconsole [options] [connection ...]options:可選參數選項。
connection ...:連接信息,可以是本地 Java 進程的 PID ,也可以是遠程主機的名稱或 IP 地址加上 JMX 代理的端口號。常用選項:
-interval=n:設置監視圖的刷新間隔時間(秒),默認值為4秒。這個選項允許用戶根據需要調整監視數據的更新頻率
-J<flag>:向底層Java虛擬機傳遞參數。<flag> 是指 JVM 的參數,而 -J 是指明 jconsole 將這些參數傳遞給自身的 JVM 實例
-notile:在某些情況下,jconsole 的圖形界面可能會以平鋪方式顯示多個標簽頁,而這個選項可以阻止這種行為,使界面更加緊湊
-pluginpath <path>:指定 jconsole 插件的路徑。這個選項允許用戶加載自定義的插件來擴展 jconsole 的功能
-version:顯示 jconsole 的版本信息
-help:顯示幫助信息

jvisualvm

jvisualvm(All-in-One Java Troubleshooting Tool),是一個功能強大、集成了多個 JDK 命令行工具的可視化工具,提供了圖形用戶界面和強大的分析能力,能夠直觀地了解 Java 應用程序的運行狀況和對 Java 應用程序進行性能分析和調優。還可以生成和分析海量數據、跟蹤內存泄漏、監控垃圾回收器、執行內存和 CPU 分析等。jvisualvm 不僅支持本地 JVM 進程的監控,還支持遠程 JVM 進程的監控,這需要通過 JMX(Java Management Extensions)技術實現。

使用方法

  1. 啟動 jvisualvm
    在 Windows 系統上,可以通過在命令行中輸入 jvisualvm 命令或雙擊 %JAVA_HOME%/bin 目錄下的 jvisualvm.exe 文件來啟動 jvisualvm 。
    在 Linux 或 macOS 系統上,可以通過在終端中輸入 jvisualvm 命令來啟動。
  2. 連接 JVM 進程
    啟動后,jvisualvm 會自動檢測并列出當前系統上所有可用的 JVM 進程。用戶可以選擇一個或多個進程進行連接,并開始監視和分析。
  3. 查看和分析數據
    連接后,用戶可以在 jvisualvm 的圖形界面中查看 JVM 的性能指標、內存使用情況、線程狀態等信息,也可以使用內置的分析工具或安裝插件來進行更深入的分析和調優。

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

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

相關文章

Elasticsearch Circuit Breaker 全面解析與最佳實踐

一、Circuit Breaker 簡介 Elasticsearch 是基于 JVM 的搜索引擎&#xff0c;其內存管理十分重要。為了避免單個操作或查詢耗費過多內存導致節點不可用&#xff0c;Elasticsearch 引入了 Circuit Breaker&#xff08;熔斷器&#xff09;機制。當內存使用達到熔斷器預設閾值時&a…

ARM-定時器-定時器函數封裝配置

以TIMER7為例&#xff0c;對定時器函數進行封裝注意事項&#xff1a;GD32中TIMER7是高級定時器&#xff0c;相關詳細請參考上一篇文章。main.c//main.c#include "gd32f4xx.h" #include "systick.h" #include <stdio.h> #include "main.h" …

【日志】unity俄羅斯方塊——邊界限制檢測

Bug修復記錄 項目場景 嘗試使用Unity獨自制作俄羅斯方塊&#xff08;也許很沒有必要&#xff0c;網上隨便一搜就有教程&#xff09; 問題描述 俄羅斯方塊的邊緣檢測出錯了&#xff0c;對方塊進行旋轉后&#xff0c;無法到達最左側或者最下側的位置&#xff0c;以及其他問題。演…

C++ string:準 STL Container

歷史STL 最初是一套獨立的泛型庫&#xff08;Alexander Stepanov 等人貢獻&#xff09;&#xff0c;后來被吸納進 C 標準庫&#xff1b;std::basic_string 則是早期 C 標準&#xff08;Cfront / ARM 時代&#xff09;就存在的“字符串類”&#xff0c;并非 STL 原生物。std::st…

Golang學習筆記--語言入門【Go-暑假學習筆記】

目錄 基礎語法部分相關概念 基礎語法部分概念詳解 可見性 導包 內部包 運算符 轉義字符 函數 風格 函數花括號換行 代碼縮進 代碼間隔 花括號省略 三元表達式 數據類型部分相關概念 數據類型部分概念詳解 布爾類型 整型 浮點型 復數類型 字符類型 派生類型…

linux中kill 命令使用詳解

在Linux系統里&#xff0c;kill命令的主要功能是向進程發送信號&#xff0c;以此來控制進程的運行狀態。下面為你詳細介紹它的使用方法&#xff1a; 基礎語法 kill [選項] [進程ID]進程ID也就是PID&#xff0c;可通過ps、pgrep或者top等命令來獲取。 常用信號及其含義 信號可以…

Nginx 安裝與 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服務器

Nginx 安裝與 HTTPS 配置指南:使用 OpenSSL 搭建安全 Web 服務器 一、Nginx安裝 1. 安裝依賴項 sudo yum groupinstall "Development Tools" -y # 非必須 sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y2.下載Nginx wget http://n…

寫個 flask todo app,簡潔,實用

- 此項目雖然看起來簡單&#xff0c;實際上&#xff0c;修改成自己喜歡的樣子&#xff0c;也是費時間的。 - 別人都搞AI 相關的項目&#xff0c;而我還是搞這種基礎的東西。不要灰心。 - 積累。不論項目大小&#xff0c;不論難易&#xff0c;只看是否有用。項目地址&#xff1a…

4麥 360度定位

要在 ESP32 上用 4 個麥克風實現 360 聲源定位&#xff0c;通常思路是通過 時延估計&#xff08;TDOA&#xff09; 幾何計算&#xff0c;核心流程&#xff1a;陣列布置將 4 個麥克風等間距布置成正方形&#xff08;或圓形&#xff09;。記陣列中心為原點&#xff0c;麥克風編號…

使用yolov10模型檢測視頻中出現的行人,并保存為圖片

一、使用yolov10模型檢測視頻中出現的行人&#xff0c;并保存為圖片&#xff0c;detect_person.py代碼如下&#xff1a;from ultralytics import YOLOv10 import glob import os import cv2 import argparsedef detect_person(videoPath, savePath):if not os.path.exists(save…

現在希望用git將本地文件crawler目錄下的文件更新到遠程倉庫指定crawler目錄下,命名相同的文件本地文件將其覆蓋

git checkout main git pull origin main $source “D:\黑馬大數據學習\crawler” $dest Join-Path (Get-Location) “crawler” if (-not (Test-Path $dest)) { New-Item -ItemType Directory -Path $dest | Out-Null } Copy-Item -Path $source* -Destination $dest -Recur…

網絡調制技術對比表

&#x1f4ca; 網絡調制技術全維度對比表?調制技術??簡稱??頻譜效率??抗噪性??功率效率??復雜度??關鍵特性??典型應用場景??幅度鍵控?ASK低差高低/低電路簡單&#xff0c;易受干擾遙控器、光通信(OOK)?頻移鍵控?FSK低-中中中中/中抗噪較好&#xff0c;頻譜…

優化 Elasticsearch JVM 參數配置指南

一、概述 Elasticsearch 是基于 JVM 的搜索和分析引擎。JVM 參數的合理配置直接影響著 Elasticsearch 的性能和穩定性。盡管 Elasticsearch 已經提供了默認的 JVM 設置&#xff0c;但在某些特定場景下&#xff0c;我們可能需要進行適當的調整和優化。 本文將詳細講述如何安全、…

Python, Go 開發如何進入心流狀態APP

要開發一款基于Python和Go語言、幫助用戶進入“心流”狀態&#xff08;高度專注、高效愉悅的心理狀態&#xff09;的應用&#xff0c;需結合兩種語言的技術優勢&#xff08;Go的高并發與性能、Python的靈活性與AI生態&#xff09;及心流觸發機制&#xff08;清晰目標、即時反饋…

一文詳解手機WiFi模塊與連接

目錄 1 硬件模塊 1.1 Wifi射頻模 1.2 電源管理模塊 2 軟件與協議棧 2.1 系統服務層 2.2 認證與協議處理 3 連接流程 3.1 開啟WiFi與掃描 3.2 選擇網絡與認證 3.3 連接與IP分配 4 特殊連接方式 4.1 WPS快速連接 4.2 熱點模式&#xff08;AP模式&#xff09; 4.3 U…

Java 網絡編程詳解:從基礎到實戰,徹底掌握 TCP/UDP、Socket、HTTP 網絡通信

作為一名 Java 開發工程師&#xff0c;你一定在實際開發中遇到過需要與遠程服務器通信、實現客戶端/服務端架構、處理 HTTP 請求、構建分布式系統等場景。這時&#xff0c;Java 網絡編程&#xff08;Java Networking&#xff09; 就成為你必須掌握的核心技能之一。Java 提供了豐…

Java面試題(中等)

1. 計算機網絡傳輸層有哪些協議&#xff1f;分別適用于什么場景&#xff1f;TCP協議(傳輸控制協議)?&#xff1a;面向連接、可靠傳輸&#xff0c;流量控制、擁塞控制。適用于要求數據完整性的場景&#xff0c;如文件傳輸、網頁瀏覽、電子郵件等。UDP協議 (用戶數據報協議)?&a…

Apache 消息隊列分布式架構與原理

消息隊列 基本概念 定義 消息隊列&#xff08;Message Queue, MQ&#xff09;是一種分布式中間件&#xff0c;通過異步通信、消息暫存和解耦生產消費雙方的機制&#xff0c;提供消息的順序性保證、可靠投遞和流量控制能力&#xff0c;廣泛應用于微服務解耦、大數據流處理等場景…

ModernBERT如何突破BERT局限?情感分析全流程解析

自2018年推出以來&#xff0c;BERT 徹底改變了自然語言處理領域。它在情感分析、問答、語言推理等任務中表現優異。借助雙向訓練和基于Transformer的自注意力機制&#xff0c;BERT 開創了理解文本中單詞關系的新范式。然而&#xff0c;盡管成績斐然&#xff0c;BERT 仍存在局限…

股票Level2逐筆成交及十檔訂單簿分鐘級Tick歷史行情數據詳細解析

本地股票數據處理與分析實戰指南 在量化投資與金融數據分析領域&#xff0c;高效處理本地存儲的股票數據是核心能力之一。本文將從數據類型定義、解析流程及實際應用角度&#xff0c;系統介紹如何基于CSV文件管理股票分鐘數據、高頻Tick數據、逐筆數據、Level2歷史行情等多樣化…