当前位置:首页 > 内存 > 正文

内存溢出异常java

  • 内存
  • 2024-08-13 00:39:22
  • 6973

一、outofmemoryerror怎么解决如何解决内存不足错误?我们一起来看看:
outofmemoryerror,也称为内存溢出,在Java方法中是很常见的,一般有两种常见的情况会发生这种情况。
1.
OutOfMemoryError:PermGenspace
出现这种情况可能是因为程序中使用了大量的jar或者类,导致Java虚拟机加载类的空间不足,即,以及关联的PermanentGenerationspace。
如果要解决问题,一般有两种方法:
1第一种是增大Java虚拟机中参数XX:PermSize和XX:MaxPermSize的大小,其中XX:PermSize是初始永久大小,XX:MaxPermSize是最大永久保存区域大小。
例如,对于tomcat6.0,在或文件中的一系列环境变量名称描述的末尾添加一行,即第70行左右,具体为:
JAVA_OPTS=-XX:PermSize=64M-XX:MaxPermSize=128m
如果是windows服务器,也可以在系统环境变量中设置。使用tomcat发布sprint+struts+hibernate架构的程序时很容易出现这种内存溢出错误。使用上面的方法基本就可以解决问题了。
2.第二种方法是清理应用程序中web-inf/lib下的jar如果tomcat使用了多个应用程序,并且多个应用程序使用同一个jar,那么可以选择将公用的jar移动到。tomcat公共lib以减少重复的类加载。这种方法总体来说还是不错的,当然,如果有选择的话,还是用第一种方法比较好。
2.
OutOfMemoryError:Javaheapspace
这个问题的原因也有可能是因为Java虚拟机创建了太多的对象,在垃圾回收期间,虚拟机分配了太多满空间的对象,也就是与堆空间相关。
如果要解决这个问题,通常有两种方法:
1、可以检查程序,看看是否存在无限循环或者不必要的重复创建大量对象的情况。找到根本原因后,就可以修改程序和算法了。
2.您还可以选择增加Java虚拟机中的Xms(这是初始堆大小)和Xmx(这是最大堆大小)参数的大小。
例如:setJAVA_OPTS=-Xms256m-Xmx1024m
当然,规范必须根据实际情况定义问题,然后选择正确的解决方法。
二、Java内存溢出的原因有哪些【条件1】:
emoryError:Javaheapspace:这是因为Java堆内存不够,一是实际上不够,二是程序中存在死循环;
Java堆如果空间不够,可以通过修改如下JVM配置来解决:br/>[情况2]
emoryError:GCoverheadlimitexceed
[说明]:JDK6有一个新的错误类型,当GC花费太长时间来释放一个小空间时抛出;
[解决办法]:
1.检查系统是否有使用大内存或无限循环的代码;
2通过添加JVM配置来限制内存使用:
-xx:-useGCOverheadLimit