Java内存溢出
Java内存溢出大致有下面三种情况:
OutOfMemoryError: PermGen space
程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。解决这类问题有以下两种办法:
增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小;
清理应用程序中web-inf/lib下的jar,如果tomcat部署了多个应用,很多应用都使用了相同的jar,可以将共同的jar移到tomcat共同的lib下,减少类的重复加载。
OutOfMemoryError: Java heap space
java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。解决这类问题有两种思路:
检查程序,看是否有死循环或不必要地重复创建大量对象。
增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。
OutOfMemoryError:unable to create new native thread
JVM已经被系统分配了大量的内存,并且它至少要占用可用内存的一半。在线程个数很多的情况下,你分配给JVM的内存越多,此错误发生的可能性就越大。