麒麟os内存不足时可依次用free查总量、top定位高占用进程、ps筛选top n、/proc/meminfo分析深层异常、baobab识别缓存文件。

如果您在麒麟OS中发现系统响应迟缓、应用启动缓慢或界面卡顿,则可能是由于内存资源被过度占用。以下是分析内存使用状况与定位高占用来源的具体操作步骤:
一、使用free命令查看内存总体使用状况
free命令用于快速获取物理内存与交换空间的总量、已用、空闲及可用数值,其输出中的available字段直接反映当前可立即分配给新进程的内存大小,比free列更具实际参考价值。
1、打开终端,输入free -h并回车,以人类可读单位(如GiB、MiB)显示内存统计。
2、观察输出中available列数值:若持续低于500MiB且buff/cache占比极高,属内核积极利用空闲内存做页缓存的正常行为;若available极低且buff/cache同步萎缩,则可能存在真实内存不足。
3、如需持续监控内存变化,可执行watch -n 2 free -h,每2秒刷新一次结果。
二、使用top命令实时排序定位高内存进程
top命令提供动态刷新的全屏界面,每三秒更新一次各进程的CPU与内存消耗,支持交互式排序与进程干预,功能接近Windows任务管理器。
1、在终端中输入top并回车,进入实时监控界面。
2、按下Shift+M(即大写M),按内存使用率从高到低排列进程列表。
3、观察RES(Resident Memory)列数值,该值表示进程当前占用的物理内存大小,重点关注持续高于500MiB的进程。
4、若需退出监控,直接按q键。
三、使用ps命令结合sort筛选内存占用Top N进程
ps命令生成静态进程快照,配合管道符与sort命令可实现一次性按内存占用排序并提取前N个进程,适用于脚本化分析或快速筛查。
1、执行ps -aux | sort -rnk4 | head -n 10,按%MEM列(第4列)降序排列,并仅显示前10个进程。
2、若需排除系统守护进程干扰,可追加过滤:执行ps -aux | grep -v 'root\|systemd' | sort -rnk4 | head -n 10。
3、对特定进程名进一步验证,例如查找java相关进程内存占用:执行ps -aux | grep java | sort -rnk4。
四、使用/proc/meminfo深入分析内存构成异常
/proc/meminfo是内核提供的内存状态原始数据接口,可用于排查HugePages配置不当、共享内存溢出等深层问题。
1、执行cat /proc/meminfo,查看HugePages_Total与HugePages_Free值。
2、计算内存大页实际占用:将HugePages_Total乘以2MB,若该值占总物理内存超60%,则说明大页配置不合理,需调整数据库或虚拟化服务配置。
3、检查Shmem与SReclaimable字段:若Shmem显著偏高,执行df -h | grep tmpfs确认/dev/shm等tmpfs挂载点使用情况,并用du -sh /dev/shm/* 2>/dev/null | sort -hr定位具体大文件。
五、使用baobab图形化工具辅助识别内存映射文件与缓存目录
baobab虽主要面向磁盘空间分析,但其扫描结果可间接反映内存压力来源——大量缓存文件、日志堆积或临时映射文件均会加剧内存回收压力。
1、若未安装,执行sudo apt install -y baobab进行安装。
2、启动后选择扫描主目录或/var目录,重点关注.cache、.local/share/Trash、/var/log/journal等路径下的巨型子树。
3、在矩形树状图视图中,点击面积最大的区块,右侧面板将显示其完整路径与大小,便于判断是否为内存映射文件(如*.so、*.jar临时解压目录)或未清理的core dump文件。










