飛翔的起點

          從這里出發

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          jvm的內存模型

          從大的方面來講,JVM的內存模型分為兩大塊:

           

          永久區內存( Permanent space)和堆內存(heap space)。

           

          棧內存(stack space)一般都不歸在JVM內存模型中,因為棧內存屬于線程級別。

          每個線程都有個獨立的棧內存空間。

           

          Permanent space里存放加載的Class類級對象如class本身,methodfield等等。

          heap space主要存放對象實例和數組。

          heap spaceOld GenerationNewGeneration組成,OldGeneration存放生命周期長久的實例對象,而新的對象實例一般放在NewGeneration

          New Generation還可以再分為Eden(圣經中的伊甸園)、和Survivor區,新的對象實例總是首先放在Eden區,Survivor區作為Eden區和Old區的緩沖,可以向Old區轉移活動的對象實例。

           

          一般,我們常見的OOMout of memory)內存溢出異常,就是堆內存空間不足以存放新對象實例時導致。

           

          永久區內存溢出相對少見,一般是由于需要加載海量的Class數據,超過了非堆內存的容量導致。通常出現在Web應用剛剛啟動時,因此Web應用推薦使用預加載機制,方便在部署時就發現并解決該問題。

           

          棧內存也會溢出,但是更加少見。

           

          堆內存優化:

          調整JVM啟動參數-Xms  -Xmx   -XX:newSize -XX:MaxNewSize,如調整初始堆內存和最大對內存 -Xms256M -Xmx512M。 或者調整初始New Generation的初始內存和最大內存-XX:newSize=128M -XX:MaxNewSize=128M

           

          永久區內存優化:

          調整PermSize參數   如  -XX:PermSize=256M-XX:MaxPermSize=512M

           

          棧內存優化:

          調整每個線程的棧內存容量  如  -Xss2048K

           

           

          最終,一個運行中的JVM所占的內存堆內存  +  永久區內存  +  所有線程所占的棧內存總和 

          posted on 2009-09-18 09:12 forgood 閱讀(302) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 衡东县| 确山县| 息烽县| 阳泉市| 巴林左旗| 那曲县| 黄浦区| 通河县| 建始县| 阿拉善右旗| 达尔| 额敏县| 深水埗区| 沅江市| 芜湖市| 水富县| 柘城县| 郑州市| 辰溪县| 兖州市| 临安市| 秦安县| 南乐县| 吴桥县| 咸丰县| 左权县| 安岳县| 洪泽县| 惠来县| 邳州市| 项城市| 西吉县| 洞头县| 阳谷县| 收藏| 铁岭市| 砀山县| 江阴市| 修武县| 浦城县| 晋江市|