飛翔的起點

          從這里出發

          導航

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(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 閱讀(295) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 黑水县| 宁波市| 富宁县| 高青县| 蒙城县| 绥阳县| 德江县| 嘉峪关市| 吕梁市| 大名县| 靖边县| 临澧县| 繁昌县| 嘉义市| 诏安县| 杭锦后旗| 双流县| 昌平区| 远安县| 彰武县| 赤壁市| 门源| 长宁区| 项城市| 南宫市| 南阳市| 井研县| 门源| 西贡区| 陕西省| 拜城县| 布尔津县| 铜鼓县| 淮安市| 上饶县| 佛教| 玉门市| 安岳县| 正蓝旗| 泾阳县| 大冶市|