JVM OOM

OOM: Out Of MemoryError

【转】:原文:http://blog.sina.com.cn/s/blog_68158ebf0100v28l.html

这里再介绍一下JVM发生OOM的几种情况:

1、java.lang.OutOfMemoryError: Java heap space

这是我们平常理解的OOM,是由于heap space确实没有空间分配,这种一般是由于内存泄漏导致,也有可能是heap space设置太小。需要具体分析

2、java.lang.OutOfMemoryError: PermGen space

jvm 规范里面有定义一个method space,这里主要放classes和method list和一个string pool,string有一个intern方法,通过这个方法定义的string都放在这里(好像不常用),这里设置不太小会导致OOM,缺省64M,主 要由于现在应用依赖的第三方类越来越多,导致这类问题频繁发生,需要引起重视

3、Requested array size exceeds VM limit
这种是由于申请的array size超出了heap space大小,比如在一个256M的heap space中申请一个512M的array,这种基本都是应用bug导致

4、request <size> bytes for <reason>. Out of swap space?
这种是由于heap size设置相对于系统物理内存太大,导致系统swap space不足,这种的解决办法就是减小heap size大小

5、<reason> <stack trace> (Native method)
这种估计是最麻烦的了,也是最少碰到的,是由于jni或native method导致,如果自己没有写这类的东西,基本可以说是jdk问题

你可能感兴趣的:(java,java,jvm,jvm,oom,oom,异常,内存溢出)