JVM學習系列學習一

JVM學習系列學習一

凱哥java 凱哥java
本文主要內容:
JVM學習系列學習一

一:爲什麼要對JVM進行優化?

我們在自己電腦上進開發的時候,幾乎很少考慮對JVM進行優化。但是,我們寫的代碼,放到生成環境會出現入下各種情況:

1:運行的應用越來越“卡”了、日誌不輸出、頁面點擊沒反應了

2:爲什麼服務器CPU使用率突然飆升上來了

3:在多線程應用下,如何分配線程數量?

……

怎麼解決?重啓嗎?萬能的重啓服務嗎?生成環境能隨隨便便就重啓嗎 ?

通過本系列教程,我們將對JVM有更深入的學習。目的:我們不僅僅讓程序能跑起來,而且是要跑的更快!可以分析解決在生產環境中所遇到的各種“棘手”的問題。

注:本套課程使用的JDK版本爲1.8.所以,建議學習的朋友也用1.8的。

二:JVM的運行參數

在JVM中有很多的參數是可以進行設置的。這樣做的目的是可以讓JVM在各種環境中都能夠高效的運行。絕大部分的參數保持默認的即可。

2.1:JVM三種參數類型

標準參數

-help

-version

標準參數,一般都是很穩定的,既是在未來的JVM版本中也不會被去掉或者改變的。可以使用java -help查看所有的標準參數。

JVM學習系列學習一
還記得我們JDK剛安裝完成後,查看JDK版本的命令嗎?

Java -version 就是標準的參數。
JVM學習系列學習一

-X參數(非標準參數)

-Xint

-Xcomp

-X參數是非標準的參數,在不同的版本中,參數可能會有所不同,可以通過Java -X命令來查看:

JVM學習系列學習一
-XX參數(使用頻率較高的)

-XX:newSize

-XX:+UseSerialGC

-XX參數也是非標準參數,主要用於JVM的調優和debug操作。

-XX參數的使用有2種方式,一種是boolean類型,一種是非boolean類型。

Boolean類型的

格式:-XX:[+-]<name>

作用:標識啓用或禁用<name>屬性

如:-XX:+DisableExplicitGC。表示禁用手動調用GC操作,也就是說調用SysTem.gc()無效的。

非Boolean類型:

格式:-XX:<name>=<value>

作用:表示<name>屬性的值爲<value>

如:-XX:NewRatio=1。表示新生代和老年代的比值。

-Xms與-Xmx參數:

-Xms與-Xmx分別是設置JVM的堆內存的初始值大小和最大大小。

-Xmx2048m:等價於-XX:maxHeapSize,設置JVM最大堆內存爲2048M

-Xms512m:等價於-XX:InitialHeapSize,設置JVM初始堆內存爲512M

適當的調整JVM的內存大小,可以充分雷勇服務器資源,讓程序跑的更快。

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