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