當前位置:
首頁 > 知識 > JVM學習系列學習二

JVM學習系列學習二

查看JVM的運行參數

在有些時候我們需要查看JVM的運行參數,這個需求可能有以下兩種情況:

1:運行Java命令時候列印出運行參數

2:查看正在運行的Java進程中的參數。

運行Java命令時候列印參數:

運行Java命令時候列印參數,需要添加-XX: PrintFlagsFinal參數即可。

三:JVM內存模型

JVM的內存模型在1.7和1.8之間有較大的區別。我們先來看看1.7的堆內存模型。

下圖就是JDK1.7堆內存模型:

簡圖:

Young年輕代:

在Java中絕大多數新建的Object對象,都是在年輕代區的。先進入eden區。當Eden內存滿了之後,會執行一次或多次GC回收之後,沒有被回收掉的對象將會被移動到S0或者S1區。

註:Eden的S0、S1的比例為:8:1:1

Tenure(Old Memory)老年代:

在被執行多次GC之後,任然沒有沒回收的對象,將會被從S0或S1區移動到Old內存區。

Perm(Perm Gen):永久區—在JDK1.8之後就沒有這個了。

永久區是一個特殊的JVM內存區。這個區域是用來存儲描述Class的元數據。

拋出:java.lang.OutOfMemoryError:PermGen。這個異常的時候,無論怎麼設置-Xmx也不管用的。如果想設置這個區域大小參數使用的是:-XX:PermGen,-XX:MaxpermGen(不同版本略有變化)。

下節預告:

1:堆、棧、永久區比較

2:內存管理優化參數

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凱哥java 的精彩文章:

JVM學習系列學習一

TAG:凱哥java |