内存溢出的原因以及解决方案

简介: 内存溢出的原因以及解决方案

内存溢出



内存溢出是什么

1.系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出


2.意思就是你用资源的时候为他开辟了一段空间,当你用完时忘记释放资源了,这时内存还被占用着,一次没关系,但是内存泄漏次数多了就会导致内存溢出


内存溢出的原因

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

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

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

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

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


解决方案

1.修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)


2.检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。


3.对代码进行走查和分析,找出可能发生内存溢出的位置。


4.使用内存查看工具动态查看内存使用情况


对代码分析找出可能发生内存溢出的位置, 可能出现的几种情况:

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


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


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


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


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

目录
相关文章
|
8月前
|
运维 监控 Java
内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)
全网最全的内存溢出CPU占用过高排查文章,包含:问题出现现象+临时解决方案+复现问题+定位问题发生原因+优化代码+优化后进行压测,上线+复盘
1395 5
|
2月前
|
存储 监控 Java
JVM内存泄漏的分析与解决方案
JVM内存泄漏的分析与解决方案
|
数据库
mongo占用内存过大解决方案
自己有一个测试用的服务器,配置很低。年前出现几次问题,重启后就好了也就没注意。后来越来越频繁就调查了一下,发现重启后内存就一直增长直到接近100%。使用ps aux查看cpu和内存使用情况,发现mongo占用了大部分的内存,这是什么情况?
684 0
|
5月前
|
Arthas Java 测试技术
微服务轮子项目(49) -常见JVM内存错误及解决方案
微服务轮子项目(49) -常见JVM内存错误及解决方案
67 0
|
5月前
|
存储 数据库 C语言
Hawkeyes: x86软件迁移Arm的弱内存序问题解决方案
本文介绍了x86软件迁移到Arm过程中可能遇到的弱内存序问题的解决方案,解析了弱内存序问题的根因,介绍了Hawkeyes的架构和实现原理。欢迎有需求的团队发送邮件咨询
622 0
|
8月前
|
存储 监控 NoSQL
深入探究Redis:内存模型、哨兵选举算法与脑裂解决方案
深入探究Redis:内存模型、哨兵选举算法与脑裂解决方案
400 1
|
9月前
|
前端开发 API PHP
php内存溢出:Allowed memory size of 1342bytes exhausted (tried to allocate 8192 bytes)本地配置和宝塔配置解决方案
php内存溢出:Allowed memory size of 1342bytes exhausted (tried to allocate 8192 bytes)本地配置和宝塔配置解决方案
85 0
|
9月前
|
算法 Java Android开发
JVM内存溢出及其解决方案
Java虚拟机(JVM)是执行Java程序的核心环境,它管理着应用程序的内存分配和回收。然而,在某些情况下,应用程序可能会遇到内存溢出的问题,即JVM无法为应用程序分配足够的内存空间。本文将探讨JVM内存溢出的原因以及解决方案,帮助开发人员更好地理解和处理这一问题。
197 0
|
12月前
|
消息中间件 存储 JavaScript
ThreadLocal 搭配线程池使用造成内存泄漏的原因和解决方案
ThreadLocal 搭配线程池使用造成内存泄漏的原因和解决方案
PHP内存泄漏问题的原因是什么?解决方案是什么?
PHP内存泄漏问题的原因是什么?解决方案是什么?
551 0