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 閱讀(393) 評論(0)  編輯  收藏 所屬分類: JVM

          主站蜘蛛池模板: 三原县| 隆昌县| 黔南| 乃东县| 清苑县| 迭部县| 忻城县| 锦州市| 红原县| 霍城县| 五寨县| 菏泽市| 上林县| 集贤县| 周口市| 长沙县| 工布江达县| 辽宁省| 汉寿县| 平邑县| 永州市| 罗山县| 高邮市| 台安县| 南郑县| 武宣县| 天长市| 台北县| 嘉鱼县| 东乡县| 延川县| 双鸭山市| 新河县| 桐柏县| 临漳县| 岳阳县| 白河县| 永和县| 讷河市| 苏尼特右旗| 玉林市|