成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

秒懂JVM的三大參數類型,就靠這十個小實驗了

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

[[343690]]

作者 | 悟空哥

來源 | 悟空聊架構(ID:PassJava666)

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

 

標配參數

常見標配參數

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

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

實驗步驟:

查看Java JDK 版本

  1. java -version 

實驗 1-1

 

可以看到Java JDK 版本為1.8.0_131

  • 查看 Java 幫助文檔
  1. java -help 

實驗 1-2

 

  • 查看版本和幫助文檔
  1. java -showversion 

實驗 1-3

 

X 參數

X 參數簡介

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

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

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

查看版本

  1. java -version 

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

實驗 2-1

 

  • 修改編譯模式為解釋執行模式
  1. java -Xint -version 

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

實驗 2-2

 

  • 修改編譯模式為只編譯模式
  1. 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

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

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

  1. javac demoXXparam.java  

編譯代碼

 

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

生產Class文件

 

在 WebIDE 上運行 demoXXparam 代碼

  1. java demoXXparam 

運行Java程序

 

輸出:

  1. hello XX params 

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

Terminal->New Terminal

開啟新控制臺窗口

 

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

  1. jps -l 

jps

 

發現demoXXparam進程的id為 518

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

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

  1. jinfo -flag PrintGCDetails 518 

jinfo

 

結果如下:

  1. -XX:-PrintGCDetails 

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

動手實驗 4 - 開啟參數

  • 在 WebIDE 控制臺強制退出demoXXparam程序
  1. ctrl + c 
  • 然后清理屏幕
  1. clear 
  • 然后以參數 -XX:+PrintGCDetails 運行 demoXXparam 程序
  1. java -XX:+PrintGCDetails demoXXparam 

實驗 4

 

  • 輸出:
  1. hello XX params 

查看demoXXparam進程的 id

進程 id

 

可以看到demoXXparam進程 id 為 1225

查看 demoXXparam 的配置參數 PrintGCDetails

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

  1. jinfo -flag PrintGCDetails 1225 

PrintGCDetails 參數

 

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

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

查看元空間的值

  1. jinfo -flag MetaspaceSize 526 

MetaspaceSize 大小

 

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

設置元空間的值為 128 M

  1. java -XX:MetaspaceSize=128m demoXXparam    

查看元空間的大小

  1. jinfo -flag MetaspaceSize 1062 

調整元空間大小

 

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

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

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

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

  1. java -XX:InitialHeapSize=200m demoXXparam 
  2. 或者 
  3. java -Xms200m demoXXparam 

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

設置 InitialHeapSize

  1. java -XX:MaxHeapSize=200M demoXXparam 
  2. 或者 
  3. java -Xmx200m demoXXparam 

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

 


設置 MaxHeapSize

 

 

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

  1. jinfo -flags <進程id> 

 


mark

 

 

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

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

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

  1. java -XX:+PrintFlagsInitial -version  

 

 


PrintFlagsInitial

 

 

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

  1. java -XX:+PrintFlagsFinal -version 

 

 


PrintFlagsFinal

 

 

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

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

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

 

 


Global flags

 

 

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

總結如下:

 

 


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

 

 

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

  1. java -XX:+PrintFlagsFinal -XX:+InitialHeapSize=150M demoXXparam 

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

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

 

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

  1. java -XX:+PrintCommandLineFlags -version 

會打印出如下參數:

 


JVM 自動配置的XX選項

 

 

實驗總結

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

JVM性能調優還有很多要講的,一篇是講不完的,我會分成幾篇來為大家講述,形式主要以小實驗的方式來為大家講解。

本文轉載自微信公眾號「 悟空聊架構」,可以通過以下二維碼關注。轉載本文請聯系 悟空聊架構公眾號。

 

 

責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2024-12-31 08:10:00

2018-02-02 10:49:05

編程開發Java

2017-05-10 11:08:59

2020-07-29 15:01:50

JVMGCJDK

2020-10-14 15:00:38

Python 開發編程語言

2013-09-29 13:36:07

虛擬SAN

2010-12-06 09:49:28

Linux快速啟動

2024-01-30 00:40:10

2022-11-04 08:16:22

2025-02-03 00:10:00

人工智能DevOpsLLMOps

2019-11-12 14:50:49

Windows電腦Windows 10

2021-04-16 08:11:07

程序體積優化

2024-04-29 08:35:29

監控Kafka集群

2021-10-18 08:01:44

TS語言TypeScript

2022-10-19 15:20:58

pandas數據處理庫技巧

2011-06-01 09:59:52

2021-05-12 09:00:00

WebReactJavaScript

2023-05-15 12:11:24

2023-12-04 14:28:15

模型應用設計

2020-12-10 16:11:17

Java開發代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区三区四区 | 亚洲中午字幕 | 午夜电影福利 | 97精品国产97久久久久久免费 | 久久不卡 | 欧美综合一区 | 亚洲一区国产精品 | 做a视频| 欧美久久免费观看 | 中文字幕色站 | 欧美色人| 精品成人av | 日韩午夜电影 | 欧美精品一区三区 | 亚洲激情网站 | 亚洲综合第一页 | 综合久久国产 | 成人久久久久 | 成人福利视频网站 | 欧美456 | 国产精品完整版 | 超碰在线免费av | 成人h免费观看视频 | 国产精品久久毛片av大全日韩 | 成人激情视频 | 2022精品国偷自产免费观看 | 99精品国产一区二区三区 | 亚洲免费精品一区 | 久久99精品久久久久婷婷 | 欧美成人一区二免费视频软件 | 国产亚洲精品久久19p | 亚洲视频中文字幕 | 亚洲一区二区成人 | 伊人网在线看 | 久久国产精彩视频 | 九九九久久国产免费 | 欧美一区视频 | 精品1区 | 国产电影一区二区 | 成人久草| 亚洲va中文字幕 |