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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本實驗的目的是講解 JVM 的三大參數類型。在JVM調優中用到的最多的 XX 參數,而如何去查看和設置 JVM 的 XX 參數也是調優的基本功,本節以實驗的方式講解 JVM 參數的查看和設置。希望大家能有所啟發。

標配參數

常見標配參數

  • -version,獲取JDK版本

  • -help,獲取幫助

  • -showverision,獲取JDK版本和幫助

動手實驗 1 - 查看標配參數

實驗步驟:

  • 查看Java JDK 版本
java?-version
實驗 1-1

可以看到Java JDK 版本為1.8.0_131

  • 查看 Java 幫助文檔
java?-help
實驗 1-2
  • 查看版本和幫助文檔
java?-showversion
實驗 1-3

X 參數

X 參數簡介

我們常用的javac大家都知道是把java代碼編譯成 class 文 Java 文件,那么 class 文件怎么去執行呢?這里用到了三個X參數來說明 class 文件怎么在虛擬機里面跑起來的。

  • -Xint:直接解釋執行
  • -Xcomp:先編譯成本地代碼再執行
  • -XMixed:混合模式(既有編譯執行也有解釋執行)

動手實驗 2 - 查看和配置X參數

  • 查看版本
java?-version

在WebIDE的控制臺窗口執行Java -version 后,可以看到我的環境是混合模式執行java程序的。

實驗 2-1
  • 修改編譯模式為解釋執行模式
java?-Xint?-version

在WebIDE的控制臺窗口執行命令

實驗 2-2
  • 修改編譯模式為只編譯模式
java?-Xcomp?-version
實驗 2-3

XX 參數

XX? 參數簡介

XX 參數有兩種類型,一種是 Boolean 類型,另外一種是鍵值對類型。

  • Boolean 類型
    • 公式:-XX:+某個屬性?或者,-XX:-某個屬性?+表示開啟了這個屬性,-表示關閉了這個屬性。
    • 案例:-XX:-PrintGCDetails,表示關閉了GC詳情輸出
  • key-value類型
    • 公式:-XX:屬性key=屬性value
    • 案例:-XX:屬性metaspace=2000000,設置Java元空間的值為2000000。

動手實驗 3 - 查看參數是否開啟

本實驗主要講解如下內容:查看運行的 Java 程序 PrintGCDetails 參數是否開啟

  • 編寫一個一直運行的 Java 程序
  • 查看該應用程序的進程 id
  • 查看該進程的 GCDetail 參數是否開啟

在 WebIDE 上右鍵單擊菜單,選擇 New File 創建新文件

New File

創建文件名為 demoXXparam.java

demoXXparam.java

在 WebIDE 上編寫 demoXXparam.java

public?class?demoXXparam?{
????public?static?void?main(String[]?args)?throws?InterruptedException?{
????????System.out.println("hello?XX?params");
????????Thread.sleep(Integer.MAX_VALUE);
????}
}

在 WebIDE 的控制臺窗口編譯 demoXXparam.java 代碼

javac?demoXXparam.java?
編譯代碼

編譯之后,會在當前文件夾產生我們所編寫的 ?demoXXparam?類的?demoXXparam.class字節碼文件

生產Class文件

在 WebIDE 上運行 demoXXparam 代碼

java?demoXXparam
運行Java程序

輸出:

hello?XX?params

在 WebIDE 中新開一個控制臺窗口

Terminal->New Terminal

開啟新控制臺窗口

查看所有的運行的java程序,-l 表示打印出class文件的包名

jps?-l
jps

發現demoXXparam進程的id為 518

查看 demoXXparam 程序是否開啟了PrintGCDetails這個參數

PrintGCDetails:??在發生垃圾回收時打印內存回收日志,并在進程退出時輸出當前內存各區域分配情況

jinfo?-flag?PrintGCDetails?518
jinfo

結果如下:

-XX:-PrintGCDetails

上面提到 ?-號表示關閉,所以當前 demo 程序沒有開啟?PrintGCDetails參數。

動手實驗 4 ?- 開啟參數

  • 在 WebIDE 控制臺強制退出demoXXparam程序
ctrl?+?c
  • 然后清理屏幕
clear
  • 然后以參數?-XX:+PrintGCDetails?運行 demoXXparam 程序
java?-XX:+PrintGCDetails?demoXXparam
實驗 4
  • 輸出:
hello?XX?params

查看demoXXparam進程的 id

進程 id

可以看到demoXXparam進程 id 為 1225

查看 demoXXparam 的配置參數 PrintGCDetails

打開一個新的控制臺窗口,執行以下命令來查看進程為 1225 的?PrintGCDetails參數是否開啟

jinfo?-flag?PrintGCDetails?1225
PrintGCDetails 參數

可以看到PrintGCDetails是開啟的,+號表示開啟。

動手實驗 5 - Key-Value 類型參數值

查看元空間的值

jinfo?-flag?MetaspaceSize?526
MetaspaceSize 大小

由此可以得出元空間的大小為 21 M。

設置元空間的值為 128 M

java?-XX:MetaspaceSize=128m?demoXXparam???

查看元空間的大小

????jinfo?-flag?MetaspaceSize?1062
調整元空間大小

最常見的 -Xms 和 -Xmx 屬于哪種參數?

  • -Xms參數代表-XX:InitialHeapSize ,初始化堆內存(默認只會用最大物理內存的64分1)
  • -Xmx:參數代表-XX:MaxHeapSize ,大堆內存(默認只會用最大物理內存的4分1)

起了別名,但還是屬于XX參數。

動手實驗 6 - 設置 -XX:InitialHeapSize 和 -XX:MaxHeapSize 的值。

java?-XX:InitialHeapSize=200m?demoXXparam
或者
java?-Xms200m?demoXXparam

查看 InitialHeapSize 參數的值,大小為 200 M。

設置 InitialHeapSizejava?-XX:MaxHeapSize=200M?demoXXparam
或者
java?-Xmx200m?demoXXparam

查看 MaxHeapSize 參數的值,大小為 200 M。

設置 MaxHeapSize

擴展:查看 Java 程序已設置的所有參數值

jinfo?-flags?
mark
  • Non-Defalut VM flags 代表參數類型是JVM自帶的參數。
  • Command line 代表是用戶自定義的參數

如何查看出廠設置和自定義設置的XX配置項

動手實驗 7 - 查看出廠默認設置的所有XX配置項

java?-XX:+PrintFlagsInitial?-version?
PrintFlagsInitial

動手實驗 8 - 查看 JVM 當前所有XX配置項

java?-XX:+PrintFlagsFinal?-version?
PrintFlagsFinal

我們可以看到幾個關鍵信息:

  • [Global flags]:全局參數,如果自定義修改了某個應用的參數,并不會修改全局參數

    比如之前我們修改了MetaspaceSize為128m,但列表里面還是21m。

Global flags
  • :=:參數已被修改,如下圖所示InitialHeapSize初始化堆內存參數已修改為264241152

    總結如下:

出廠設置和自定義參數設置

動手實驗 9 - 運行程序時打印XX配置選項

java?-XX:+PrintFlagsFinal?-XX:+InitialHeapSize=150M?demoXXparam

可以看到修改后的值為 157286400(150 M)

運行程序時打印XX配置選項

動手實驗 10 - 查看 JVM 自動配置的或者用戶手動設置的XX選項(非應用程序的)

java?-XX:+PrintCommandLineFlags?-version

會打印出如下參數:

JVM 自動配置的XX選項

實驗總結

本次用實驗學習了如何查看基本參數、X參數、XX參數和設置XX參數。以及用好jps和jinfo工具來查看進程和設置參數。

JVM性能調優還有很多要講的,一篇是講不完的,后面有機會繼續用實驗的形式來分享。

往期資源? 需要請自取

Java基礎核心知識大總結.pdf 下載

68道C語言/C++常見面試題(含答案)下載

Java后端開發學習路線+知識點總結

前端開發學習路線+知識點總結

C/C++開發(后臺)學習路線+知識點總結

嵌入式開發學習路線+知識點總結

每天進步一點點

慢一點才能更快

下篇見。

總結

以上是生活随笔為你收集整理的如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。