Java 問題定位工具 -- jps


概覽

最近老大布置的任務就是質量加固,偶然看到了一些對於 Java 性能分析的介紹,因此,有了此篇學習筆記。

JDK本身提供了很多方便的JVM性能調優監控工具,除了集成式的VisualVM和jConsole外, 還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一種工具都有其自身的特點, 用戶可以根據你需要檢測的應用或者程序片段的狀況,適當的選擇相應的工具進行檢測, 先通過一個表格形式簡要介紹下這幾個命令的作用和使用方法。本文重點介紹 jps 的使用方法

命令 作用
jps 基礎工具
jstack 查看某個Java進程內的線程堆棧信息
jmap jmap導出堆內存,然后使用jhat來進行分析
jhat 主要用來解析java堆dump並啟動一個web服務器,然后就可以在瀏覽器中查看堆的dump文件
jstat 主要是對java應用程序的資源和性能進行實時的命令行監控,包括了對heap size和垃圾回收狀況的監控
hprof hprof能夠展現CPU使用率,統計堆內存使用情況

簡介

jps 全稱 JVM Process Status Tool,命令位於 jdk 的 bin 目錄下,其作用是顯示當前系統的 Java 進程情況,及其 pid 號。他是 Java自帶的一個命令。

jps 命令用來查看所有 Java 進程,每一行就是一個 Java 進程信息。

jps 僅查找當前用戶的 Java 進程,而不是當前系統中的所有進程,要顯示其他用戶的還只能用 ps 命令。

jps 常用參數

  • jps -l 如果是以 class 方式運行,會顯示進程的主類 main.class 的全名,如果是以 jar 包方式運行的,就會輸出 jar 包的完整路徑名:

第一列的數字就是進程的 pid

  • jps -v 輸出傳遞給 JVM 的參數,v 表示虛擬機,jps -vl 比較常見的組合;
  • jps -V 大寫 v,表示通過文件傳遞給 JVM 的參數
# michael @ Michael-MBP in ~ [16:37:59]
$ jps -v |grep Mybatis
8005 MybatisDemoApplication -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53364,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=53363 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:/Users/michael/Library/Caches/IntelliJIdea2018.2/captureAgent/debugger-agent.jar=file:/private/var/folders/m1/ydypchs901lffc5sms07mrp40000gn/T/capture.props -Dfile.encoding=UTF-8
  • jps -m 輸出傳遞給 main.class 方法的參數,實用的一個命令,jps -ml 比較實用的組合,會顯示包名/類名/參數
  • jps -q 只輸出進程的 pid

總結

jps 是比較常用的 Java 命令。使用 jps 可以查看當前有哪些 Java 進程處於運行狀態。如果運行了一個 web 應用(使用tomcat、jboss、jetty等啟動)的時候,就可以使用 jps 查看啟動情況。

有的時候我想知道這個應用的日志會輸出到哪里,或者啟動的時候使用了哪些javaagent,那么我可以使用 jps -v 查看進程的jvm參數情況。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM