国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

關于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工作原理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 垣曲县| 辰溪县| 卢氏县| 宜宾县| 沁水县| 扎赉特旗| 邵武市| 南宫市| 嵩明县| 怀集县| 湟中县| 郎溪县| 庄浪县| 合江县| 苍梧县| 沙坪坝区| 鄱阳县| 萨嘎县| 小金县| 涟源市| 平利县| 烟台市| 金堂县| 保山市| 麻江县| 斗六市| 公安县| 盐源县| 龙州县| 仁布县| 江北区| 庆安县| 木里| 获嘉县| 罗城| 甘德县| 桐庐县| 铜山县| 孟连| 全州县|