Java中如何解决内存溢出(java.lang.OutOfMemoryError)呢?

戚薇 Java经验 发布时间:2023-05-17 09:42:23 阅读数:9512 1
下文笔者讲述Java代码处理内存溢出的方法及示例分享,如下所示

OutOfMemoryError异常的原因

1.内存中加载的数据量过于庞大
    如:
	  一次从数据库取出过多数据;
2.集合类中有对对象的引用
    使用完后未清空,使得JVM不能回收 
3.代码中存在死循环或循环产生过多重复的对象实体 
4.使用的第三方软件中的BUG
5.启动参数内存值设定的过小

OutOfMemoryError常见的错误提示

tomcat:
   java.lang.OutOfMemoryError: PermGen space
weblogic:
   Root cause of ServletException java.lang.OutOfMemoryError
tomcat:
   java.lang.OutOfMemoryError: Java heap space
resin:
   java.lang.OutOfMemoryError
java:
   java.lang.OutOfMemoryError

修复java.lang.OutOfMemoryError的方法

 1.增加jvm的内存大小
   方法有:
    在运行某个class文件时
     可使用java -Xmx256M aa.class来设置运行aa.class时jvm所允许占用的最大内存为256M
     对tomcat容器,可以在启动时对jvm设置内存限度。对tomcat,可以在catalina.bat中添加:
      set CATALINA_OPTS=-Xms128M -Xmx256M
       set JAVA_OPTS=-Xms128M -Xmx256M
 2.优化程序,释放垃圾
   如:避免死循环
      应该及时释放种资源:
	     内存,数据库的各种连接,防止一次载入太多数据

常见检查代码中可能导致OutOfMemoryError的方法

 
1.检查代码中是否有死循环或递归调用
2.检查是否有大循环重复产生新对象实体
3.检查对数据库查询中
    是否有一次获得全部数据的查询
    如果一次取十万条记录到内存,就可能引起内存溢出
	对于数据查询,尽量采用分页的查询模式
5.检查list、MAP等集合对象是否有使用完后
    未清除的问题
    List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202305/16842877776488.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者