JDK工具包使用
文章目錄
- 前言
- java程序啟動參數-D
- JDK自帶工具包
- 1、javap(反匯編器)
- 2、jps(虛擬機進程監視器)
- 3、jstack(jvm堆棧跟蹤工具)
- 4、jconsole(可視化管理工具)
- 5、java
- 6、jar
- 其他工具
- jad(更強大的反匯編工具)
- 參考文章
前言
本篇博客是只要是對JDK工具使用的筆記,若文章中出現相關問題,請指出!
所有博客文件目錄索引:博客目錄索引(持續更新)
java程序啟動參數-D
用于設置系統屬性值。相當于添加到System類中的props。
public final class System {private static Properties props;//根據key來獲取對應的系統屬性public static String getProperty(String key) {checkKey(key);SecurityManager sm = getSecurityManager();if (sm != null) {sm.checkPropertyAccess(key);}return props.getProperty(key);}//可設置對應的鍵值對public static String setProperty(String key, String value) {checkKey(key);SecurityManager sm = getSecurityManager();if (sm != null) {sm.checkPermission(new PropertyPermission(key,SecurityConstants.PROPERTY_WRITE_ACTION));}return (String) props.setProperty(key, value);} }實例演示
在執行字節碼文件時,給命令后添加參數如:java -DChanglu=666"
- 設置虛擬機參數
JDK自帶工具包
1、javap(反匯編器)
在jdk的bin目錄下的一個反匯編器,可以查看編譯器為我們生成的字節碼。從而了解編譯器在執行字節碼的很多內部工作。
簡單編譯字節碼文件
首先使用javac 類名.java將源代碼轉為字節碼文件(.class后綴)。
反編譯命令:javap 指定類.class進行反編譯。
各種參數:
-help --help -? 輸出此用法消息-version 版本信息,其實是當前javap所在jdk的版本信息,不是class在哪個jdk下生成的。-v -verbose 輸出附加信息(包括行號、本地變量表,反匯編等詳細信息)-l 輸出行號和本地變量表-public 僅顯示公共類和成員-protected 顯示受保護的/公共類和成員-package 顯示程序包/受保護的/公共類 和成員 (默認)-p -private 顯示所有類和成員-c 對代碼進行反匯編-s 輸出內部類型簽名-sysinfo 顯示正在處理的類的系統信息 (路徑, 大小, 日期, MD5 散列)-constants 顯示靜態最終常量-classpath <path> 指定查找用戶類文件的位置-bootclasspath <path> 覆蓋引導類文件的位置實例:
2、jps(虛擬機進程監視器)
jps(Java Virtual Machine Process Status Tool):顯示當前系統的java進程情況及進程id,主要在linux/unix平臺上查看當前進程運行的相關信息,包含進程號。
實際案例:
1、jps:進程號+類名
2、jps -l:進程號+全限定類名(推薦使用)
3、jps -q:進程號
3、jstack(jvm堆棧跟蹤工具)
jstack:java虛擬機自帶的一種堆棧跟蹤工具,可追蹤指定的pid進程打印其中的堆棧信息。
實際案例:
1、jstack pid 進程號:查看指定進程號的堆棧信息,常用于排查死鎖問題,配合jps獲取到進程號。
4、jconsole(可視化管理工具)
Jconsole (Java Monitoring and Management Console):一種基于JMX的可視化監視、管理工具。能夠進行線程監控、內存監控。
執行bin目錄下的jconsole工具即可:jconsole
使用流程
選擇指定的進程進行連接(該進程需要啟動):
即可排查正在運行中的項目出現的死鎖情況:
5、java
啟動jar包
使用以下命令執行jar包時,會用到目錄META-INF\MANIFEST.MF文件,在該文件中有一個Main-Class: xxx,說明是java -jar會執行的類
// 當前ssh窗口被鎖定,可按CTRL + C打斷程序運行,或直接關閉窗口,程序退出 java -jar xxxxx.jar//當前ssh窗口不被鎖定,但是當窗口關閉時,程序中止運行 java -jar xxxxx.jar &//意思是不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行 nohup Java -jar xxxxxx.jar &6、jar
jar -cvf my.jar com\changlu\JVM\C.class:打包指定路徑下指定包名中的Class類到名為my.jar的jar包中。
- com\changlu\JVM\C.class則是指代當前目錄下對應文件的指定類。
其他工具
jad(更強大的反匯編工具)
官網:https://varaneckas.com/jad/
相關命令文章:反編譯工具jad 命令說明
windows平臺:下載完之后直接解壓即可。
Linux平臺:解壓之后,通過使用命令
如何使用?
- 將jad工具放置到需要反編譯的目錄下,執行命令jad -sjava Class文件名(反編譯成java文件到當前目錄)。
參考文章
[1]. javap的基本用法
[2]. java程序啟動參數-D詳解
[3]. 反編譯工具jad 命令說明
[4]. java命令–jstack 工具
[5]. jps命令的使用方法
ps://blog.csdn.net/elf8848/article/details/39926475)
[4]. java命令–jstack 工具
[5]. jps命令的使用方法
[6]. JConsole可視化工具介紹
我是長路,感謝你的耐心閱讀。如有問題請指出,我會積極采納!
歡迎關注我的公眾號【長路Java】,分享Java學習文章及相關資料
Q群:851968786 我們可以一起探討學習
注明:轉載可,需要附帶上文章鏈接
總結
- 上一篇: 我决定切换到 Vue.js,不再使用 R
- 下一篇: 浅析为什么没有朝代在武汉建都?