paulwong

          JVM內存配置

          JVM內存主要分為兩個部分,分別是PermanentSapce和HeapSpace。

          PermantSpace主要負責存放加載的Class類級對象如class本身,method,field等反射對象,一般不用配置。

          JVM的Heap區可以通過-X參數來設定。HeapSpace= {Old + NEW {= Eden , from, to } }

          當一個URL被訪問時,內存申請過程如下:

          1. JVM會試圖為相關Java對象在Eden中初始化一塊內存區域 
          2. 當Eden空間足夠時,內存申請結束。否則到下一步 
          3. JVM試圖釋放在Eden中所有不活躍的對象(這屬于1或更高級的垃圾回收), 釋放后若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區
          4.  Survivor區被用來作為Eden及OLD的中間交換區域,當OLD區空間足夠時,Survivor區的對象會被移到Old區,否則會被保留在Survivor區 
          5. 當OLD區空間不夠時,JVM會在OLD區進行完全的垃圾收集(0級) 
          6. 完全垃圾收集后,若Survivor及OLD區仍然無法存放從Eden復制過來的部分對象,導致JVM無法在Eden區為新對象創建內存區域,則出現”out of memory錯誤”

          Xms/Xmx:定義NEW+OLD段的總尺寸,ms為JVM啟動時NEW+OLD的內存大小;mx為最大可占用的NEW+OLD內存大小。。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷; 

          NewSize/MaxNewSize:定義單獨NEW段的尺寸,NewSize為JVM啟動時NEW的內存大小;MaxNewSize為最大可占用的NEW的內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷;

          Xms/Xmx和NewSize/MaxNewSize定義好后,OLD區間也自然定義完畢了,即OLD區初始大小=(Xms-NewSize),OLD區最大可占用大小=(Xmx-MaxNewSize); 

          PermSize/MaxPermSize:定義Perm段的尺寸,PermSize為JVM啟動時Perm的內存大小;MaxPermSize為最大可占用的Perm內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。

          posted on 2019-08-01 16:44 paulwong 閱讀(389) 評論(0)  編輯  收藏 所屬分類: JVM

          主站蜘蛛池模板: 池州市| 当雄县| 禄丰县| 凤阳县| 蒙阴县| 建湖县| 呼玛县| 峨眉山市| 芦山县| 绍兴县| 美姑县| 三都| 通城县| 调兵山市| 安龙县| 友谊县| 英德市| 和政县| 长兴县| 桐庐县| 马龙县| 高尔夫| 徐州市| 辰溪县| 溧阳市| 博野县| 科技| 定州市| 怀柔区| 化州市| 突泉县| 高雄县| 广州市| 宁德市| 买车| 双辽市| 镇远县| 大同市| 石台县| 孝昌县| 鹤庆县|