Linux怎么查看内存报错
Linux怎么查看内存报错详细介绍
在 Linux 中查看内存相关报错,可通过以下方法逐步排查(按优先级排序):
一、实时查看内核内存错误(最直接)
命令:
bash
说明:
dmesg实时打印内核环形缓冲区日志,含内存分配失败、OOM(内存不足)、硬件错误等- 常见关键词:
OOM killer:内存耗尽时内核强制终止进程BAD_PAGE/BUG:物理内存坏块或硬件问题page allocation failure:连续内存分配失败(常见于高负载)
示例输出:
plaintext
[ 123.456] OOM killer:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-1.scope,task=app,pid=1234,uid=1000[ 456.789] Memory failure: page allocation failed: order:3, mode:0x2040d0
二、系统日志深度分析
1. 通用日志(适用于非 systemd 系统)
bash
/var/log/syslog
2. systemd 日志(推荐)
bash
journalctl systemdjournalctl your-app
三、硬件级内存检测(物理故障排查)
1. 临时检测(无需重启)
bash
edac-utilsdmidecode
2. 全面检测(需重启)
bash
memtest86+dnf memtest86+
- 注意:若检测出
Corrected Errors(可纠正错误),需尽快更换内存;Uncorrected Errors(不可纠正错误)为严重硬件故障。
四、应用层内存错误(程序崩溃)
1. 查看 coredump(需开启)
bash
unlimited/proc/sys/kernel/core_pattern
gdb ./your-app /tmp/core-your-app-1234-1623456789
gdb bt
2. 语言特定工具(如 Java/Go)
- Java:
jmap -heap <pid>查看堆内存溢出 - Go:
go tool pprof http://localhost:6060/debug/pprof/heap分析内存泄漏
五、内存状态实时监控
bash
9123watch htop
典型场景处理建议:
- 频繁 OOM:检查是否有内存泄漏程序(
ps -eo pid,user,%mem,command | sort -k3 -nr | head) - 内核报错含
BAD_PAGE:优先运行memtest86+检测硬件 - 程序随机崩溃:结合 coredump 和
dmesg确认是否为内存访问越界
提示:若需长期监控,可配置 rsyslog 规则将内存日志单独归档(修改 /etc/rsyslog.conf 加入 kern.* /var/log/kernel-memory.log)。