<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 41  文章 - 7  trackbacks - 0
    <2016年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    鳥欲高飛先振翅,人求上進先讀書。本文是原書的第9章 線程的監控及其日常工作中如何分析里的9.3.3節常見的內存溢出的三種情況。
    3. 常見的內存溢出的三種情況:
    1)JVM Heap(堆)溢出:java.lang.OutOfMemoryError: Java heap space
    JVM在啟動的時候會自動設置JVM Heap的值, 可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的時間是用于GC,且可用的Heap size 不足2%的時候將拋出此異常信息。
    解決方法:手動設置JVM Heap(堆)的大小。
    2)PermGen space溢出: java.lang.OutOfMemoryError: PermGen space
    PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。為什么會內存溢出,這是由于這塊內存主要是被JVM存放Class和Meta信息的,Class在被Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同,sun的 GC不會在主程序運行期對PermGen space進行清理,所以如果你的APP會載入很多CLASS的話,就很可能出現PermGen space溢出。一般發生在程序的啟動階段。
    解決方法: 通過-XX:PermSize和-XX:MaxPermSize設置永久代大小即可。
    3)棧溢出: java.lang.StackOverflowError : Thread Stack space
    棧溢出了,JVM依然是采用棧式的虛擬機,這個和C和Pascal都是一樣的。函數的調用過程都體現在堆棧和退棧上了。調用構造函數的 “層”太多了,以致于把棧區溢出了。 通常來講,一般棧區遠遠小于堆區的,因為函數調用過程往往不會多于上千層,而即便每個函數調用需要 1K的空間(這個大約相當于在一個C函數內聲明了256個int類型的變量),那么棧區也不過是需要1MB的空間。通常棧的大小是1-2MB的。通俗一點講就是單線程的程序需要的內存太大了。 通常遞歸也不要遞歸的層次過多,很容易溢出。
    解決方法:1:修改程序。2:通過 -Xss: 來設置每個線程的Stack大小即可。
    4. 所以Server容器啟動的時候我們經常關心和設置JVM的幾個參數如下(詳細的JVM參數請參看附錄三):
    -Xms:java Heap初始大小, 默認是物理內存的1/64。
    -Xmx:ava Heap最大值,不可超過物理內存。
    -Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一 。增大年輕代后,將會減小年老代大小,可以根據監控合理設置。
    -Xss:每個線程的Stack大小,而最佳值應該是128K,默認值好像是512k。
    -XX:PermSize:設定內存的永久保存區初始大小,缺省值為64M。
    -XX:MaxPermSize:設定內存的永久保存區最大大小,缺省值為64M。
    -XX:SurvivorRatio:Eden區與Survivor區的大小比值,設置為8,則兩個Survivor區與一個Eden區的比值為2:8,一個Survivor區占整個年輕代的1/10
    -XX:+UseParallelGC:F年輕代使用并發收集,而年老代仍舊使用串行收集.
    -XX:+UseParNewGC:設置年輕代為并行收集,JDK5.0以上,JVM會根據系統配置自行設置,所無需再設置此值。
    -XX:ParallelGCThreads:并行收集器的線程數,值最好配置與處理器數目相等 同樣適用于CMS。
    -XX:+UseParallelOldGC:年老代垃圾收集方式為并行收集(Parallel Compacting)。
    -XX:MaxGCPauseMillis:每次年輕代垃圾回收的最長時間(最大暫停時間),如果無法滿足此時間,JVM會自動調整年輕代大小,以滿足此值。
    -XX:+ScavengeBeforeFullGC:Full GC前調用YGC,默認是true。
    實例如:JAVA_OPTS=”-Xms4g -Xmx4g -Xmn1024m -XX:PermSize=320M -XX:MaxPermSize=320m -XX:SurvivorRatio=6″
    原創文章,轉載請注明: 轉載自并發編程網 – ifeve.com本文鏈接地址: 《 Java并發編程從入門到精通》 常見的內存溢出的三種情況
    posted on 2016-07-26 23:05 胡小軍 閱讀(343) 評論(0)  編輯  收藏 所屬分類: JVM

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 性色午夜视频免费男人的天堂 | 亚洲av无码乱码国产精品fc2| 我的小后妈韩剧在线看免费高清版 | 亚洲精品无码专区在线| 午夜亚洲AV日韩AV无码大全| 免费大黄网站在线看| 久久久久国色AV免费看图片 | 亚洲国产精品一区二区第一页免| 成年人网站免费视频| 东方aⅴ免费观看久久av| 特级毛片A级毛片免费播放| 亚洲午夜无码久久久久软件| 亚洲精品在线免费观看视频| 久久国产亚洲精品麻豆| 国产a v无码专区亚洲av| 免费在线观看理论片| 日韩精品视频免费在线观看| 美女视频黄的全免费视频网站| 久久99热精品免费观看牛牛| 四虎国产精品免费永久在线| 亚洲高清免费视频| 午夜免费国产体验区免费的 | 免费一级做a爰片久久毛片潮喷| a毛片基地免费全部视频| 免费人成在线观看69式小视频| 无码精品国产一区二区三区免费| a级日本高清免费看| 三级网站免费观看| 两个人看的www免费视频| 国产午夜无码精品免费看| 免费无码作爱视频| 国产精品免费无遮挡无码永久视频| 中文字幕永久免费视频| 久久性生大片免费观看性| 国产真人无码作爱免费视频| 两个人看的www高清免费观看| 成人性生交大片免费看好| 日本在线免费观看| 三年片在线观看免费大全电影| 99久在线国内在线播放免费观看 | 久久亚洲国产精品成人AV秋霞 |