a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學院 > 操作系統 > 正文

關于java中的OutOfMemory種類和解決方法

2024-06-28 16:00:36
字體:
來源:轉載
供稿:網友

博客分類: jvm  1、OutOfMemory的四種情況 1) 永久區溢出    Exception in thread "main" java.lang.OutOfMemoryError: PermGen space                      這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域(包括常量池: 靜態變量),它和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。         這種錯誤常見在web服務器對jsp進行PRe compile的時候。         可以通過設置jvm啟動參數來解決: -XX:MaxPermSize=256m Java代碼  收藏代碼/**  * -XX:+HeapDumpOnOutOfMemoryError -XX:MaxPermSize=2m   */  public class PermGenSpace {            public static void main(String[] args) {          List<String> list = new ArrayList<String>();          int i=0;          while(true){              list.add(String.valueOf(i++).intern());          }      }  }     2)堆溢出  java.lang.OutOfMemoryError: Java heap space           這部分用于存放類的實例。被緩存的實例(Cache)對象,大的map,list引用大的對象等等,都會保存于此。          堆內存會在jvm啟動時自動設置,初始值 -Xms為物理內存的1/64,最大值-Xmx為1/4;可以通過參數-Xmn、-Xms、-Xmx設置,一般-Xms和-Xmx不超過80%,-Xmn為-Xmx的1/4; Java代碼  收藏代碼/**   * -XX:+HeapDumpOnOutOfMemoryError -Xms20m -Xmx20m  -XX:MaxNewSize=10m  */  public class HeapSpace {            public static void main(String[] args) {          List<String> list = new ArrayList<String>();          int i=0;          while(true){              list.add(new String(""+i++));          }      }  }      3)java.lang.OutOfMemoryError: GC overhead limit exceeded      JDK6新增錯誤類型。當GC為釋放很小空間占用大量時間時拋出。  Java代碼  收藏代碼/**  * -XX:+HeapDumpOnOutOfMemoryError -Xms20m -Xmx20m  -XX:MaxNewSize=256m  */  public class HeapSpace {            public static void main(String[] args) {          List<String> list = new ArrayList<String>();          int i=0;          while(true){              list.add(new String(""+i++));          }      }    }   可以添加JVM的啟動參數來限制使用內存:-XX:-UseGCOverheadLimit 4)棧溢出錯誤,非規范的OutOfMemoryError     Exception in thread "main" java.lang.StackOverflowError           這部分用于存放局部變量、方法棧幀信息。棧幀太多,也就是函數調用層級過多時就會出現此異常,檢查是否有死遞歸的情況。            對應的啟動參數為:-Xss ( JDK1.5以后默認是1M,之前是256K) Java代碼  收藏代碼/**  * -XX:+HeapDumpOnOutOfMemoryError -Xss(默認1M)  */  public class StackOverflow {            public int i=0;            public void stackLeak(){          i++;          stackLeak();      }            public static void main(String[] args) {          StackOverflow sof = new StackOverflow();          sof.stackLeak();      }  }                實例,以下是1G內存環境下java jvm 的參數設置參考:                JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true  2、dump排查方案        jvm啟動時添加參數-XX:+HeapDumpOnOutOfMemoryError,這樣當內存溢出時,會生成dump文件:           java.lang.OutOfMemoryError: Java heap space           Dumping heap to java_pid5304.hprof ...           Heap dump file created [85357895 bytes in 2.095 secs]        使用Memory Analyze分析,查看類使用情況; 3、分析工具1)動態分析,實時 :  Jprofile2)靜態分析 ,需要dump文件:     Eclipse Memory Analyzer等  參考:http://fangzhu19880123.CUOxin.com/blog/1129039
上一篇:筆記本下開WiFi

下一篇:SSH工作原理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲 自拍 另类 欧美 丝袜 | 一级黄色片在线 | 91福利在线播放 | 国产一级视频 | 久久久久久久久99精品 | а天堂中文最新一区二区三区 | 羞羞视频在线播放 | 日韩精品小视频 | 久久91 | 国产欧美一区二区精品性色 | 欧美午夜视频在线观看 | 91丁香| 精品无码久久久久久国产 | 国产精品国产a | 手机看片国产精品 | 亚洲国产精品成人综合色在线婷婷 | 91午夜精品一区二区三区 | 欧美精品一区二区三区在线播放 | 成人日韩| 精品欧美一区二区三区 | 免费看的黄网站 | 羞羞网站免费观看 | 精品视频在线观看 | 国产精品一区二区三区四区 | 亚洲国产精品99 | 热久久久久 | 琪琪午夜伦伦电影福利片 | 无套内谢孕妇毛片免费看红桃影视 | 欧美一区二区三区精品 | 日韩精品一区二区三区中文在线 | 成人精品一区二区三区中文字幕 | 91精品专区| 日日噜噜噜噜久久久精品毛片 | 久久精品免费视频播放 | 欧美日韩国产在线 | 亚洲激情 欧美 | 牛牛精品 | 日本欧美亚洲 | 成人在线观 | 欧美精品成人一区二区三区四区 | 亚洲欧美国产精品久久 |