日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDK工具包使用

發(fā)布時間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK工具包使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • java程序啟動參數(shù)-D
  • JDK自帶工具包
    • 1、javap(反匯編器)
    • 2、jps(虛擬機進(jìn)程監(jiān)視器)
    • 3、jstack(jvm堆棧跟蹤工具)
    • 4、jconsole(可視化管理工具)
    • 5、java
    • 6、jar
  • 其他工具
    • jad(更強大的反匯編工具)
  • 參考文章

前言

本篇博客是只要是對JDK工具使用的筆記,若文章中出現(xiàn)相關(guān)問題,請指出!

所有博客文件目錄索引:博客目錄索引(持續(xù)更新)

java程序啟動參數(shù)-D

用于設(shè)置系統(tǒng)屬性值。相當(dāng)于添加到System類中的props。

public final class System {private static Properties props;//根據(jù)key來獲取對應(yīng)的系統(tǒng)屬性public static String getProperty(String key) {checkKey(key);SecurityManager sm = getSecurityManager();if (sm != null) {sm.checkPropertyAccess(key);}return props.getProperty(key);}//可設(shè)置對應(yīng)的鍵值對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);} }

實例演示

在執(zhí)行字節(jié)碼文件時,給命令后添加參數(shù)如:java -DChanglu=666"

  • 設(shè)置虛擬機參數(shù)
@Test public void test01() throws IOException {//調(diào)用該方法即可獲取到changlu鍵對應(yīng)的值666String str = System.getProperty("changlu");System.out.println(str); }


JDK自帶工具包

1、javap(反匯編器)

在jdk的bin目錄下的一個反匯編器,可以查看編譯器為我們生成的字節(jié)碼。從而了解編譯器在執(zhí)行字節(jié)碼的很多內(nèi)部工作。

簡單編譯字節(jié)碼文件

首先使用javac 類名.java將源代碼轉(zhuǎn)為字節(jié)碼文件(.class后綴)。

反編譯命令:javap 指定類.class進(jìn)行反編譯。

各種參數(shù)

-help --help -? 輸出此用法消息-version 版本信息,其實是當(dāng)前javap所在jdk的版本信息,不是class在哪個jdk下生成的。-v -verbose 輸出附加信息(包括行號、本地變量表,反匯編等詳細(xì)信息)-l 輸出行號和本地變量表-public 僅顯示公共類和成員-protected 顯示受保護(hù)的/公共類和成員-package 顯示程序包/受保護(hù)的/公共類 和成員 (默認(rèn))-p -private 顯示所有類和成員-c 對代碼進(jìn)行反匯編-s 輸出內(nèi)部類型簽名-sysinfo 顯示正在處理的類的系統(tǒng)信息 (路徑, 大小, 日期, MD5 散列)-constants 顯示靜態(tài)最終常量-classpath <path> 指定查找用戶類文件的位置-bootclasspath <path> 覆蓋引導(dǎo)類文件的位置

實例

  • javap -c class文件名:代碼進(jìn)行反編譯
  • javap -v class文件名:輸出附加信息(包括行號、本地變量表,反匯編等詳細(xì)信息)


  • 2、jps(虛擬機進(jìn)程監(jiān)視器)

    jps(Java Virtual Machine Process Status Tool):顯示當(dāng)前系統(tǒng)的java進(jìn)程情況及進(jìn)程id,主要在linux/unix平臺上查看當(dāng)前進(jìn)程運行的相關(guān)信息,包含進(jìn)程號。

    實際案例

    1、jps:進(jìn)程號+類名

    2、jps -l:進(jìn)程號+全限定類名(推薦使用)

    3、jps -q:進(jìn)程號



    3、jstack(jvm堆棧跟蹤工具)

    jstack:java虛擬機自帶的一種堆棧跟蹤工具,可追蹤指定的pid進(jìn)程打印其中的堆棧信息。

    實際案例

    1、jstack pid 進(jìn)程號:查看指定進(jìn)程號的堆棧信息,常用于排查死鎖問題,配合jps獲取到進(jìn)程號。



    4、jconsole(可視化管理工具)

    Jconsole (Java Monitoring and Management Console):一種基于JMX的可視化監(jiān)視、管理工具。能夠進(jìn)行線程監(jiān)控、內(nèi)存監(jiān)控。

    執(zhí)行bin目錄下的jconsole工具即可:jconsole


    使用流程

    選擇指定的進(jìn)程進(jìn)行連接(該進(jìn)程需要啟動):

    即可排查正在運行中的項目出現(xiàn)的死鎖情況:



    5、java

    啟動jar包

    使用以下命令執(zhí)行jar包時,會用到目錄META-INF\MANIFEST.MF文件,在該文件中有一個Main-Class: xxx,說明是java -jar會執(zhí)行的類

    // 當(dāng)前ssh窗口被鎖定,可按CTRL + C打斷程序運行,或直接關(guān)閉窗口,程序退出 java -jar xxxxx.jar//當(dāng)前ssh窗口不被鎖定,但是當(dāng)窗口關(guān)閉時,程序中止運行 java -jar xxxxx.jar &//意思是不掛斷運行命令,當(dāng)賬戶退出或終端關(guān)閉時,程序仍然運行 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則是指代當(dāng)前目錄下對應(yīng)文件的指定類。


    其他工具

    jad(更強大的反匯編工具)

    官網(wǎng):https://varaneckas.com/jad/

    相關(guān)命令文章:反編譯工具jad 命令說明

    windows平臺:下載完之后直接解壓即可。

    Linux平臺:解壓之后,通過使用命令

    如何使用

    • 將jad工具放置到需要反編譯的目錄下,執(zhí)行命令jad -sjava Class文件名(反編譯成java文件到當(dāng)前目錄)。


    參考文章

    [1]. javap的基本用法

    [2]. java程序啟動參數(shù)-D詳解

    [3]. 反編譯工具jad 命令說明

    [4]. java命令–jstack 工具

    [5]. jps命令的使用方法

    ps://blog.csdn.net/elf8848/article/details/39926475)

    [4]. java命令–jstack 工具

    [5]. jps命令的使用方法

    [6]. JConsole可視化工具介紹

    我是長路,感謝你的耐心閱讀。如有問題請指出,我會積極采納!
    歡迎關(guān)注我的公眾號【長路Java】,分享Java學(xué)習(xí)文章及相關(guān)資料
    Q群:851968786 我們可以一起探討學(xué)習(xí)
    注明:轉(zhuǎn)載可,需要附帶上文章鏈接

    總結(jié)

    以上是生活随笔為你收集整理的JDK工具包使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。