跳转到主内容
极星编程网:以代码为星,赴技术山海!

sar -r 显示 %memused 高但 free -h available 很多的 anon 页面问题

%memused高但available大是因sar统计不区分可回收内存,而available包含可换出匿名页等弹性空间;AnonPages高未必有压力,需结合active/inactive比例、swap活动、OOM及应用表现综合判断。 这是 Linux 内存管理中一个常见但容易误解的现象:
sar -r
显示
%memused
很高(比如 95%+),而
free -h
却显示
available
值很大(比如还有 8GB 可用),同时
/proc/meminfo
中的
AnonPages
数值偏高。这并不一定表示内存真的“吃紧”,而是反映了内核对“已使用”和“可用”内存的不同统计逻辑。 为什么 %memused 高但 available 很多?
sar -r
的
%memused
计算方式简单粗暴:它用
Total - Free - Buffers - Cached
(即传统意义上的“已用内存”)除以总内存,**不考虑可回收的 page cache、slab、anon pages 是否实际被锁定或活跃**。而
free -h
的
available
是内核 3.14+ 引入的更智能估算值,它综合了: 真正空闲页(
MemFree
) 可快速回收的 page cache(非 dirty、未被锁定) 部分可回收的 slab(如 dentries/i node s) 可换出的匿名页(如果 swap 启用且策略允许) 所以即使
AnonPages
较大(例如 Java 应用分配了大量堆),只要这些页当前不活跃、未被访问,内核仍认为它们是“潜在可用”的——
available
就包含了这部分弹性空间。 AnonPages 高但系统没压力?看 active/inactive 比例 高
AnonPages
本身不是问题,关键看这些匿名页是否“热”。可通过以下命令判断:
cat /proc/vmstat | grep -E "pgpgin|pgpgout|pgmajfault|pgpgin|pgpgout"
—— 若
pgmajfault
(缺页中断)持续升高,说明进程频繁触发换入,可能真缺内存; Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载
grep -i "active\|inactive" /proc/meminfo
—— 关注
Inactive(anon)
和
Active(anon)
。若
Inactive(anon)
远大于
Active(anon)
,说明大部分匿名页近期未被访问,内核随时可将其换出或回收(尤其开启
vm.swappiness > 0
时)。 如何确认是否存在真实内存压力? 别只盯数字,看行为: OOM killer 是否触发?
dmesg -T | grep -i "killed process"
—— 出现即严重内存争用 swap 使用是否增长?
swapon --show
或
cat /proc/swaps
,结合
si/so
字段(
sar -B
)看每秒换入换出量 内存分配延迟是否上升?
cat /proc/zoneinfo | grep -A5 "node.*Normal" | grep "spill"
或观察
/proc/vmstat
中
pgalloc
与
pgfail
差值 应用响应是否变慢? 如 JVM GC 时间突增、数据库查询延迟升高,再结合
pidstat -r -p
看单进程 RSS 和 %MEM 什么情况下需要干预? 仅
%memused
高 +
AnonPages
高,但
available > 10%
、无 swap 活动、无 OOM、应用正常 —— 无需操作 。这是内核高效利用内存的表现。 需关注的情形: 有 swap 且
si
(swap-in)持续 > 100 KB/s,同时
available
持续低于 5% → 考虑加内存或优化应用内存使用
AnonPages
接近
CommitLimit
(
cat /proc/meminfo | grep Commit
),且
Committed_AS
不断上涨 → 存在内存过度承诺风险,检查是否有内存泄漏进程(
ps aux --sort=-%mem | head -10
) Java 等应用
rss
远高于
heap
(
jstat -gc
对比),且
Anonymous
在
pmap -x
中占比高 → 可能存在 native memory 泄漏(如 DirectByteBuffer、JNI)

相关文章