网站首页 > 技术教程 正文
- 内存溢出的定义
内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件,而由系统配置、数据流、用户代码等原因而导致的内存溢出错误,即使用户重新执行任务依然无法避免。
接下来我们要解决如何定位内存溢出问题。
- 定位内存溢出的步骤
a)定位CPU最高的服务进程
先找到cpu占用比较高的进程:top -c 进去后按Shift+P键。一般异常的进程cpu的占用会很高,记录下这进程的PID查看指定进程CPU情况。
b)查看指定进程CPU情况
top -cp PID 命令查看此进程占用cpu最高的线程,记录下线程的ppid也可以将相关信息保存下来:top -Hp PID -o %CPU -n 1 >cpu.txt到此,我们就找到的最占用cpu的进程以及相关线程。
c)分析日志和代码
如果已经知道是哪个程序导致了内存溢出,那么我们就得学会分析日志,一般在 Out Of Memory的上方,我们都会有各种日志的输出,来标志现在这个时间点,我们的程序执行了什么操作,导致了我们的这个内存溢出,分析到这里,就轮到看代码了。
d)检查的内容方向
- 数据库相关:
1) 查询的数据量是不是超过程序之前的设定
2) 数据库连接有没有正常释放
- 集合对象使用后有没有正常释放
- 代码中有没有死循环或者递归函数
- 内存溢出的解决方案
1)直接加内存
2)检查错误日志,查看OutOfMemory错误前是否有其它异常或错误。
3)对代码进行走查和分析,找出可能发生内存溢出的位置。(上面已经说提到过)
4)使用内存查看工具动态查看内存使用情况
关于内存溢出,你有什么好的解决方案么?欢迎大家评论区留言。
猜你喜欢
- 2025-06-08 编程英文 - 缓存/缓冲区/临时存储 (cache/buffer/temporary storage)
- 2025-06-08 JVM调优实战:内存溢出排查与解决(jvm内存溢出和内存泄漏)
- 2025-06-08 什么是内存泄漏,什么是内存溢出,有什么区别
- 2025-06-08 OOM排查终极指南:25个必杀技让内存溢出无处遁形
- 2025-06-08 内存溢出与内存泄露:区别、影响与应对策略
- 2025-06-08 记一次内存溢出的分析经历(内存溢出的原理)
- 2025-06-08 那个小白还没搞懂内存溢出,只能用案例说给他听了
- 2025-06-08 应用服务器发生内存溢出怎么办?2个工具帮你解决问题
- 2025-06-08 一次大量出现Full GC、内存泄漏问题及内存溢出错误排查和分析
- 2025-06-08 Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)