欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一些常用Java命令及應(yīng)用總結(jié)

 更新時(shí)間:2025年04月24日 09:26:17   作者:foolishboy_w  
這篇文章主要介紹了一些常用Java命令及應(yīng)用的相關(guān)資料,詳細(xì)講解了如何使用這些命令來(lái)排查Cpu和內(nèi)存飆高的問(wèn)題,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、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)文章

  • Spring Boot中如何使用Swagger詳解

    Spring Boot中如何使用Swagger詳解

    Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful風(fēng)格的Web服務(wù),這篇文章主要給大家介紹了關(guān)于Spring Boot中如何使用Swagger的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • java開(kāi)發(fā)模式的深度研究

    java開(kāi)發(fā)模式的深度研究

    下面小編就為大家?guī)?lái)一篇深入理解java工廠模式。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • 學(xué)習(xí)SpringMVC——如何獲取請(qǐng)求參數(shù)詳解

    學(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)題

    這篇文章主要介紹了解決Spring配置文件中bean的property屬性中的name出錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java錯(cuò)誤:無(wú)效的源發(fā)行版:18解決辦法圖文詳解

    java錯(cuò)誤:無(wú)效的源發(fā)行版:18解決辦法圖文詳解

    在Java開(kāi)發(fā)中,如果你遇到錯(cuò)誤: 無(wú)效的源發(fā)行版,這通常意味著你正在使用的Java編譯器(通常是javac)被配置為編譯一個(gè)比你的JDK 版本更高,這篇文章主要給大家介紹了關(guān)于java錯(cuò)誤:無(wú)效的源發(fā)行版:18的解決辦法,需要的朋友可以參考下
    2024-08-08
  • SpringBoot2 task scheduler 定時(shí)任務(wù)調(diào)度器四種方式

    SpringBoot2 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-03
  • Java的引用類(lèi)型常用的四種方法

    Java的引用類(lèi)型常用的四種方法

    這篇文章主要介紹了Java的引用類(lèi)型常用的幾種方法,Java為引用類(lèi)型專(zhuān)門(mén)定義了一個(gè)類(lèi)Reference,它是引用對(duì)象的抽象基類(lèi),相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-06-06
  • SpringBoot的三大開(kāi)發(fā)工具小結(jié)

    SpringBoot的三大開(kāi)發(fā)工具小結(jié)

    本文主要介紹了SpringBoot的三大開(kāi)發(fā)工具,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Java線程啟動(dòng)為什么要用start()而不是run()?

    Java線程啟動(dòng)為什么要用start()而不是run()?

    這篇文章主要介紹了線程啟動(dòng)為什么要用start()而不是run()?下面文章圍繞start()與run()的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值,西藥的小火熬版可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • java應(yīng)用程序如何自定義log4j配置文件的位置

    java應(yīng)用程序如何自定義log4j配置文件的位置

    這篇文章主要介紹了java應(yīng)用程序如何自定義log4j配置文件的位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論