OOM Killer
找出最可能被杀掉进程
#!/bin/bash
printf "\e[5m%9s %9s %s\e[0m\n\n" "oom_score" "PID" "cmdline"
for proc in $(find /proc/ -maxdepth 1 -regex '/proc/[0-9]+');do
printf "%9d %9d %s\n" \
"$(cat $proc/oom_score)" \
"$(basename $proc)" \
"$(cat $proc/cmdline | tr '\0' ' ' | head --bytes 50)"
done 2>/dev/null | sort -nr | head -10
simulation:
#include <stdlib.h>
#include <stdio.h>
#define BYTES (16*1024*1024)
#define true 1
int main(void)
{
printf("oom !\n");
while(true){
char *p=malloc(BYTES);
if (p == NULL){
return -1;
}
printf("malloc memory pointer: %p, value: %18d, hex: %x\n",p,p,p);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define BYTES (8*1024*1024)
#define N (10240)
int main(void)
{
printf(" malloc oom\n");
int i;
for (i=0;i<N;++i)
{
char *p=malloc(BYTES);
if (p==NULL)
{
return -1;
}
}
printf(" endless lopp\n");
while(1);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律