java内存溢出怎么排错?为什么会有java内存溢出?

Java内存溢出可能是在开发过程中最常见的异常了,一旦出现这样的情况,就会导致程序运行不起来,影响开发人员的开发进程,所以我们要及时排查,那java内存溢出怎么排错?下面来我们就来给大家讲解一下。

1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。

2.检查代码中是否有死循环或递归调用。

3.检查是否有大循环重复产生新对象实体。

4.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。

5.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。

为什么会有java内存溢出?

1. 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

2. 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

3. 代码中存在死循环或循环产生过多重复的对象实体;

4. 使用的第三方软件中的BUG;

5. 启动参数内存值设定的过小;

其实java内存溢出说到底就没有足够的内存供申请者使用,这样就会报错,所以出现内存溢出不可怕,只要我们会排查就行!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java玫瑰花代码怎么做?java玫瑰花代码实例介绍

为什么qt创建的文件是乱码?qt程序文件怎么打包?

java程序员如何成为架构师?java程序员成为架构师思路