永发信息网

java运行过程中OutOfMemoryError是什么原因

答案:5  悬赏:30  手机版
解决时间 2021-04-04 01:53
  • 提问者网友:疯孩纸
  • 2021-04-03 05:59
java运行过程中OutOfMemoryError是什么原因
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-04-03 06:21
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;

  5.启动参数内存值设定的过小;
  2.Java代码导致错误的解决: 重点排查以下几点:
  1)检查代码中是否有死循环或递归调用。
  2)检查是否有大循环重复产生新对象实体。
  3)检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
  4 )检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
  查询数据时,一次查询过多的数据,后来调整了该部分的代码,每次只取出指定量的数据,成功的解决该问题。
  出现OutOfMemoryError,发现session的资源一直没有被释放产生的,最好通过session的invalidate()方法将session的资源释放。
  程序中出现死循环。 4.tomcat部署、运行出现OutOfMemoryError,加大内存参数值,解决此问题。
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-04-03 08:58
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
  5.启动参数内存值设定的过小;
  2.Java代码导致错误的解决: 重点排查以下几点:
  1)检查代码中是否有死循环或递归调用。
  2)检查是否有大循环重复产生新对象实体。
  3)检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
  4 )检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
  查询数据时,一次查询过多的数据,后来调整了该部分的代码,每次只取出指定量的数据,成功的解决该问题。
  出现OutOfMemoryError,发现session的资源一直没有被释放产生的,最好通过session的invalidate()方法将session的资源释放。
  程序中出现死循环。 4.tomcat部署、运行出现OutOfMemoryError,加大内存参数值,解决此问题。
  • 2楼网友:独行浪子会拥风
  • 2021-04-03 08:03
字面意思 外部内存错误 是不是内存卡没插好
  • 3楼网友:你可爱的野爹
  • 2021-04-03 06:48
内存溢出,配置的服务器的内存小了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯