OOM: Out Of MemoryError html
【轉】:原文:http://blog.sina.com.cn/s/blog_68158ebf0100v28l.html
java
這裏再介紹一下JVM發生OOM的幾種狀況:
一、java.lang.OutOfMemoryError: Java heap space
這是咱們日常理解的OOM,是因爲heap space確實沒有空間分配,這種通常是因爲內存泄漏致使,也有多是heap space設置過小。須要具體分析
二、java.lang.OutOfMemoryError: PermGen space
jvm 規範裏面有定義一個method space,這裏主要放classes和method list和一個string pool,string有一個intern方法,經過這個方法定義的string都放在這裏(好像不經常使用),這裏設置不過小會致使OOM,缺省64M,主 要因爲如今應用依賴的第三方類愈來愈多,致使這類問題頻繁發生,須要引發重視
三、Requested array size exceeds VM limit
這種是因爲申請的array size超出了heap space大小,好比在一個256M的heap space中申請一個512M的array,這種基本都是應用bug致使
四、request <size> bytes for <reason>. Out of swap space?
這種是因爲heap size設置相對於系統物理內存太大,致使系統swap space不足,這種的解決辦法就是減少heap size大小
五、<reason> <stack trace> (Native method)
這種估計是最麻煩的了,也是最少碰到的,是因爲jni或native method致使,若是本身沒有寫這類的東西,基本能夠說是jdk問題