日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

一定要记住的14个JVM内存配置参数

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 一定要记住的14个JVM内存配置参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jvm setting的參數確實比較多(Oracle官網Java HotSpot VM Options),但是作為一名java開發者,那幾個最常用最基本的參數設置和意義一定要死記和理解。這里推薦一個網站http://jvmmemory.com/在上面你可以方便的設置jvm的參數(當然這個網站上也是有些錯誤的,最可靠的還是去查下Oracle的文檔)。

Notice:這里我們默認以Linux JAVA8 hotspot環境為例,其Oracle官網Java Platform, Standard Edition Tools Reference(這里面有詳細參數配置說明)。

下面給出14個最常用和最基本的內存配置參數。

參數

等同于

-Xss1024k

-XX:ThreadStackSize=1024k

-Xms512m

-Xmx1024m

-XX:MaxHeapSize=1024m

-Xmn512m

-XX:NewSize=512m

-XX:MaxNewSize=512m

-XX:NewRatio=8

-XX:SurvivorRatio=32

-XX:MinHeapFreeRatio=40

-XX:MaxHeapFreeRatio=70

-XX:MetaspaceSize=128m

-XX:MaxMetaspaceSize=256m

首先我們來看看jvm內存模型結構,這里不詳細敘述,我用一張圖來讓你過目不忘(jvisualvm visualGC插件,下圖并非以上jvm參數設置,只是為了方便對jvm內存模型記憶)。當然了,這張圖死磕也要永久記住的,有了他我們記憶以上幾個參數不再是難事,時間久了也不會感覺陌生或者忘記。

一個重要的概念就是我們常常所說的設置jvm的內存參數大多關注的是堆內存的大小,你可以簡單理解成這樣:堆內存 = Old + Eden + S0 + S1年輕的 = Eden(新生代) + S0 + S1

棧內存大小相關設置

-Xss1024k

意義: 設置線程棧占用內存大小。
默認值:不同的操作系統平臺,其默認值不同,具體看官網說明。

堆內存大小相關設置

-Xms512m

意義: 設置堆內存初始值大小。
默認值:如果未設置,初始值將是老年代和年輕代分配制內存之和。

-Xmx1024m

意義: 設置堆內存最大值。
默認值:default value is chosen at runtime based on system configuration,具體請查看官網或者查看討論How is the default Java heap size determined?。

年輕代內存大小相關設置

-Xmn512m

意義: 設置新生代的初始值及最大值。
默認值:堆內存的1/4(這里要記住不是最大堆內存,還是已經分配的堆內存的1/4)。

-XX:NewSize=512m

意義:設置新生代的初始值。

-XX:MaxNewSize=512m

意義:設置新生代的最大值。

比率方式設置

-XX:NewRatio=8

意義:設置老年代和年輕代的比例。比如:-XX:NewRatio=8 表示老年代內存:年輕代內存=8:1 => 老年代占堆內存的8/9;年輕代占堆內存的1/9
默認值:2 。

-XX:SurvivorRatio=32

意義:設置新生代和存活區的比例(這里需要注意的是存活區指的是其中一個)。比如:-XX:SurvivorRatio=8 表示存活區:新生代=1:8 =》新生代占年輕代的8/10,每個存活區各占年輕代的1/10
默認值:8 。

-XX:MinHeapFreeRatio=40

意義:GC后,如果發現空閑堆內存占到整個預估上限值的40%,則增大上限值。
默認值:40 。

-XX:MaxHeapFreeRatio=70

意義:GC后,如果發現空閑堆內存占到整個預估上限值的70%,則收縮預估上限值。
默認值:70。

Meta大小相關設置

-XX:MetaspaceSize=128m

意義:初始元空間大小,達到該值就會觸發垃圾收集進行類型卸載,同時GC會對該值進行調整:如果釋放了大量的空間,就適當降低該值;如果釋放了很少的空間,那么在不超過MaxMetaspaceSize時,適當提高該值。
默認值:依賴平臺。

-XX:MaxMetaspaceSize=256m

意義:設置元空間的最大值,默認是沒有上限的,也就是說你的系統內存上限是多少它就是多少。
默認值:默認沒有上限,在技術上,Metaspace的尺寸可以增長到交換空間。

以上就是14個參數,為了深刻理解,建議本地配置讓后觀察內存大小變化(可以使用jmap -heap pid 或者 visualGC來幫助觀察)驗證自己的理解是否正確。

總結

以上是生活随笔為你收集整理的一定要记住的14个JVM内存配置参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。