JVM 虛擬機常識

兩個常識問題

作爲了解JVM 虛擬機的開始。我們很有必要弄明白以下兩個問題。

1、什麼是JAVA虛擬機

所謂虛擬機,就是一臺虛擬的計算機。他是一款軟件,用來執行一系列虛擬計算機指令。大體上,虛擬機可以分爲系統虛擬機和程序虛擬機。大名鼎鼎的VisualBox、VMware就屬於系統虛擬機。他們完全是對物理計算機的仿真。提供了一個可以運行完整操作系統的軟件平臺。
程序虛擬機的典型代表就是Java虛擬機,它專門爲執行單個計算機程序而設計,在Java虛擬機中執行的指令我們稱爲Java字節碼指令。無論是系統虛擬機還是程序虛擬機,在上面運行的軟件都限制於虛擬機提供的資源中。

2、JAVA 如何做到跨平臺

同一個JAVA程序(JAVA字節碼的集合),通過JAVA虛擬機(JVM)運行於各大主流操作系統平臺
比如Windows、CentOS、Ubuntu等。程序以虛擬機爲中介,來實現跨平臺.

在這裏插入圖片描述

3、常用虛擬機參數

JVM 虛擬機提供了三種類型參數

1、標準參數
標準參數中包括功能和輸出的參數都是很穩定的,很可能在將來的JVM版本中不會改變。你可以用 java 命令(或者是用 java -help)檢索出所有標準參數。
2、X 類型參數
非標準化的參數,在將來的版本中可能會改變。所有的這類參數都以 -X 開始。
3、XX 類型參數
在實際情況中 X 參數和 XX 參數並沒有什麼不同。X 參數的功能是十分穩定的。
用一句話來說明 XX 參數的語法。所有的 XX 參數都以"-XX:"開始,但是隨後的語法不同,取決於參數的類型:
1)對於布爾類型的參數,我們有"+"或"-",然後才設置 JVM 選項的實際名稱。
   例如,-XX:+ 用於激活選項,而 -XX:- 用於註銷選項。
   Example:
   開啓GC日誌的參數: -XX:+PrintGC
2) 對於需要非布爾值的參數,如 string 或者 integer,我們先寫參數的名稱,後面加上"=",最後賦值。
   例如: -XX:MaxPermSize=2048m

4、常用的JVM參數

1、跟蹤JAVA虛擬機的垃圾回收

GC日誌:jvm垃圾回收,記錄jvm的運行狀態,oom內存溢出的報錯信息等。

  • %t 將會被替代爲時間字符串,格式爲: YYYY-MM-DD_HH-MM-SS

開啓GC日誌:

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/logs/gc-%t.log"
2、配置JAVA虛擬機的堆空間

-Xms:初始堆大小
-Xmx:最大堆大小 實際生產環境中, 我們通常將初始化堆(-Xms) 和 最大堆(-Xmx) 設置爲一樣大。以避免程序頻繁的申請堆空間。設置爲物理內存的一半。

3、配置JAVA虛擬機的永久區(方法區)

-XX:PermSize 內存永久保留區域 ://所佔用的內存是堆內存的一部分內存,不能超過堆內存
-XX:MaxPermSize 內存最大永久保留區域

JDK 1.8中 PermSize 和 MaxPermGen 已經無效。JDK 1.8 中已經不存在永久代的結論 而以 元空間 代替。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章