一些常用Java命令及應(yīng)用總結(jié)
一、Java常用命令
Java命令在我們的日常工作中還是挺重要的,以下截圖是JDK自帶的一些Java命令,本文將簡單介紹其中幾個最常用的。
1、javac
javac是Java編譯器命令,也是最基礎(chǔ)的命令,它用于將Java源代碼文件(.java)編譯為字節(jié)碼文件(.class)。用法如下:
javac HelloWorld.java
2、jar
jar是Java歸檔工具命令,用于打包Java類文件和其他相關(guān)文件到同一個Jar文件中或者解壓縮一個jar包。用法如下:
jar {c t x u }[ v f m e 0 M i ][-C 目錄]文件名... 其中{c t x u}這四個參數(shù)必須選其一。[v f m e 0 M i ]是可選參數(shù),文件名也是必須的。 -c 創(chuàng)建一個jar包 -t 顯示jar中的內(nèi)容列表 -x 解壓jar包 -u 添加文件到j(luò)ar包中 -f 指定jar包的文件名 -v 生成詳細的報造,并輸出至標(biāo)準(zhǔn)設(shè)備 -m 指定manifest.mf文件.(manifest.mf文件中可以對jar包及其中的內(nèi)容作一些一設(shè)置) -0 產(chǎn)生jar包時不對其中的內(nèi)容進行壓縮處理 -M 不產(chǎn)生所有文件的清單文件(Manifest.mf)。這個參數(shù)與忽略掉-m參數(shù)的設(shè)置 -i 為指定的jar文件創(chuàng)建索引文件 -C 表示轉(zhuǎn)到相應(yīng)的目錄下執(zhí)行jar命令,相當(dāng)于cd到那個目錄,然后不帶-C執(zhí)行jar命令
3、java
java是Java運行命令,用于執(zhí)行Java字節(jié)碼文件。用法如下:
java HelloWorld java -jar HelloWorld.jar --運行HelloWorld.jar
4、javadoc
javadoc是Java文檔生成命令,用于從Java源代碼文件中提取注釋和生成HTML格式的API文檔。用法如下:
javadoc [options] [packagenames] [sourcefiles] [@files] 常用參數(shù)如下: -d <directory>: 指定輸出目錄。 -sourcepath <pathlist>: 指定查找源文件的位置。 -classpath <pathlist>: 指定查找用戶類文件的位置。 -link <url>: 添加外部鏈接。 -version: 顯示版本信息。 -public: 僅顯示 public 類和成員。 -protected: 顯示 protected/public 類和成員(默認值)。 -package: 顯示 package/protected/public 類和成員。 -private: 顯示所有類和成員。 -help: 顯示命令行選項并退出。 -doclet <class>: 通過替代 doclet 生成輸出。 -docletpath <path>: 指定查找 doclet 類文件的位置。 -exclude <pkglist>: 指定要排除的程序包列表。 -subpackages <subpkglist>: 指定要遞歸加載的子程序包。 -bootclasspath <pathlist>: 覆蓋由引導(dǎo)類加載器所加載的類文件位置。 -source <release>: 提供與指定發(fā)行版的源兼容性。 -extdirs <dirlist>: 覆蓋所安裝擴展的位置。 -verbose: 輸出有關(guān) Javadoc 正在執(zhí)行的操作的信息。 -locale <name>: 要使用的區(qū)域設(shè)置。 -encoding <name>: 源文件編碼名稱。 -quiet: 不顯示狀態(tài)消息。 -J<flag>: 直接將 <flag> 傳遞到運行時系統(tǒng)。 -X: 輸出非標(biāo)準(zhǔn)選項的提要?
5、javap
javap是Java類文件反匯編命令,用于顯示Java字節(jié)碼文件中的信息。用法如下:
javap [options] 類名 常用參數(shù)如下: -help:顯示幫助信息。 -version:顯示版本信息。 -v 或 -verbose:輸出附加信息。 -l:輸出行號和本地變量表。 -public:僅顯示公共類和成員。 -protected:顯示受保護的/公共類和成員。 -package:顯示程序包/受保護的/公共類 和成員(默認)。 -private:顯示所有類和成員。 -c:對代碼進行反匯編。 -s:輸出內(nèi)部類型簽名。 -sysinfo:顯示正在處理的類的系統(tǒng)信息(路徑、大小、日期、MD5散列)。 -constants:顯示最終常量。 -classpath <path>:指定查找用戶類文件的位置。 -bootclasspath <path>:覆蓋引導(dǎo)類文件的位置
6、jps
jps用于列出JVM進程的信息。用法如下:
jps [options] [hostid] 常用參數(shù)如下: -l:顯示完整的包名和應(yīng)用程序主類名。 -m:顯示完整的包名、應(yīng)用程序主類名和虛擬機的啟動參數(shù)。 -v:顯示虛擬機的啟動參數(shù)和JVM命令行選項。 -q:只顯示進程ID,不顯示類名和主類名。
7、jstack
jstack用于生成Java應(yīng)用程序的線程堆棧跟蹤信息,常用來查看每個線程的狀態(tài)、調(diào)用棧及相關(guān)信息。用法如下:
jstack [option] pid 常用參數(shù)如下: -F:當(dāng)普通jstack命令無法連接到JVM時,強制生成線程快照。使用該選項可能會終止目標(biāo)JVM。 -l:顯示鎖的附加信息,包括當(dāng)前線程持有的鎖以及等待的鎖。 -m:顯示混合模式的線程堆棧,即Java調(diào)用棧和本地C/C++代碼棧。如果懷疑本地方法(如JNI調(diào)用)可能導(dǎo)致了問題,可以使用此選項。
8、jmap
jmap命令用于生成Java堆轉(zhuǎn)儲文件并查看對象內(nèi)存占用情況的工具,常用來排查內(nèi)存泄漏、分析內(nèi)存占用問題以及分析JVM的垃圾收集器行為。用法如下:
jmap [options] <pid> 常用參數(shù)如下: -heap:顯示Java堆內(nèi)存的詳細信息,包括堆大小、使用情況和垃圾收集器的相關(guān)信息。 -histo[:live]:顯示堆中對象的統(tǒng)計信息,如果指定了live子選項,則只計算活動的對象。 -clstats:打印類加載信息。 -finalizerinfo:顯示在F-Queue隊列等待Finalizer線程執(zhí)行finalizer方法的對象。 -dump:<dump-options>:生成堆轉(zhuǎn)儲快照,<dump-options>可以指定輸出格式和文件路徑。 示例: jmap -dump:live,format=b,file=<filename> <pid> --生成heap dump jmap -histo[:live] <pid> --查看對象歷史統(tǒng)計信息
二、Java命令應(yīng)用
Java命令可以用來排查Cpu、內(nèi)存飚高問題。以下為Cpu飚高的具體排查步驟:
1、使用ps或jps命令找到j(luò)ava進程pid
ps -ef|grep java jps
2、使用top命令查看Cpu/內(nèi)存占用最高的線程id
top -Hp pid
3、使用jstack命令生成線程的堆棧信息文件
jstack pid > bak.stack
4、使用printf命令將線程id轉(zhuǎn)換為十六進制
printf "%x\n" tid
5、查看生成的bak.stack堆棧文件,找到十六進制tid對應(yīng)的內(nèi)容
less bak.stack
6、分析生成的堆棧信息,查找占用CPU過高的線程對應(yīng)的代碼是做什么業(yè)務(wù)邏輯。在分析堆棧信息時,也可以查看線程狀態(tài)(如BLOCKED, WAITING, TIMED_WAITING, RUNNABLE),確定線程是在等待資源、在執(zhí)行同步塊還是在進行IO操作。根據(jù)這些信息,結(jié)合代碼邏輯,進行相應(yīng)的優(yōu)化。
ack堆棧文件,找到十六進制tid對應(yīng)的內(nèi)容
less bak.stack
6、分析生成的堆棧信息,查找占用CPU過高的線程對應(yīng)的代碼是做什么業(yè)務(wù)邏輯。在分析堆棧信息時,也可以查看線程狀態(tài)(如BLOCKED, WAITING, TIMED_WAITING, RUNNABLE),確定線程是在等待資源、在執(zhí)行同步塊還是在進行IO操作。根據(jù)這些信息,結(jié)合代碼邏輯,進行相應(yīng)的優(yōu)化。
(PS:當(dāng)線上出現(xiàn)問題時,首先要做的是業(yè)務(wù)快速止損恢復(fù),一般可以保留出現(xiàn)問題的實例,將流量切到新的健康的實例上,業(yè)務(wù)恢復(fù)之后再查看出現(xiàn)問題的實例,查出根因)
總結(jié)
到此這篇關(guān)于一些常用Java命令及應(yīng)用的文章就介紹到這了,更多相關(guān)常用Java命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)習(xí)SpringMVC——如何獲取請求參數(shù)詳解
本篇文章主要介紹了SpringMVC——如何獲取請求參數(shù)詳解,詳細的介紹了每種參數(shù)注解的用法。具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12解決Spring配置文件中bean的property屬性中的name出錯問題
這篇文章主要介紹了解決Spring配置文件中bean的property屬性中的name出錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07SpringBoot2 task scheduler 定時任務(wù)調(diào)度器四種方式
這篇文章主要介紹了SpringBoot2 task scheduler 定時任務(wù)調(diào)度器四種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java應(yīng)用程序如何自定義log4j配置文件的位置
這篇文章主要介紹了java應(yīng)用程序如何自定義log4j配置文件的位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12