JVM學習系列學習一
本文主要內容:
一:為什麼要對JVM進行優化?
我們在自己電腦上進開發的時候,幾乎很少考慮對JVM進行優化。但是,我們寫的代碼,放到生成環境會出現入下各種情況:
1:運行的應用越來越「卡」了、日誌不輸出、頁面點擊沒反應了
2:為什麼伺服器CPU使用率突然飆升上來了
3:在多線程應用下,如何分配線程數量?
……
怎麼解決?重啟嗎?萬能的重啟服務嗎?生成環境能隨隨便便就重啟嗎 ?
通過本系列教程,我們將對JVM有更深入的學習。目的:我們不僅僅讓程序能跑起來,而且是要跑的更快!可以分析解決在生產環境中所遇到的各種「棘手」的問題。
註:本套課程使用的JDK版本為1.8.所以,建議學習的朋友也用1.8的。
二:JVM的運行參數
在JVM中有很多的參數是可以進行設置的。這樣做的目的是可以讓JVM在各種環境中都能夠高效的運行。絕大部分的參數保持默認的即可。
2.1:JVM三種參數類型
標準參數
-help
-version
標準參數,一般都是很穩定的,既是在未來的JVM版本中也不會被去掉或者改變的。可以使用java -help查看所有的標準參數。
還記得我們JDK剛安裝完成後,查看JDK版本的命令嗎?
Java -version 就是標準的參數。
-X參數(非標準參數)
-Xint
-Xcomp
-X參數是非標準的參數,在不同的版本中,參數可能會有所不同,可以通過Java -X命令來查看:
-XX參數(使用頻率較高的)
-XX:newSize
-XX: UseSerialGC
-XX參數也是非標準參數,主要用於JVM的調優和debug操作。
-XX參數的使用有2種方式,一種是boolean類型,一種是非boolean類型。
Boolean類型的
格式:-XX:[ -]
作用:標識啟用或禁用屬性
如:-XX: DisableExplicitGC。表示禁用手動調用GC操作,也就是說調用SysTem.gc()無效的。
非Boolean類型:
格式:-XX:=
作用:表示屬性的值為
如:-XX:NewRatio=1。表示新生代和老年代的比值。
-Xms與-Xmx參數:
-Xms與-Xmx分別是設置JVM的堆內存的初始值大小和最大大小。
-Xmx2048m:等價於-XX:maxHeapSize,設置JVM最大堆內存為2048M
-Xms512m:等價於-XX:InitialHeapSize,設置JVM初始堆內存為512M
適當的調整JVM的內存大小,可以充分雷勇伺服器資源,讓程序跑的更快。
※蘋果用戶:用siri翻譯華為牛B發現蘋果侮辱華為
※怎麼將本地項目放到碼雲 gitee上面?圖文詳解
TAG:凱哥java |