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问题