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

          主站蜘蛛池模板: 南充市| 且末县| 开平市| 陈巴尔虎旗| 五台县| 古交市| 涞源县| 清水河县| 信丰县| 盱眙县| 轮台县| 辛集市| 南江县| 兴业县| 巨鹿县| 寿宁县| 梧州市| 阿瓦提县| 阿城市| 五指山市| 措美县| 鸡东县| 金昌市| 洛隆县| 甘谷县| 和静县| 全州县| 阳江市| 石渠县| 白水县| 申扎县| 古蔺县| 漳平市| 东光县| 岳阳县| 依安县| 山东省| 赤城县| 余姚市| 阿拉尔市| 南安市|