请教各位 linux/java 大佬们一个关于内存占用的问题。
先说下场景是一个 springboot + websocket-starter 的即时任务服务。单机 4c8g 只运行该服务,大概维持 2w+长连接。free -h 显示内存占用为 6.8G 。在 top 中显示该进程 RES 为 5.0G 。阿里云后台报警显示已经占用了 95%+的内存。
以下为 free -h 命令输出结果
[root@develop srv]# free -h
total used free shared buff/cache available
Mem: 7.4G 6.8G 223M 536K 321M 297M
Swap: 0B 0B 0B
以下为 top 命令按内存排序部分输出结果
top - 22:40:13 up 14 days, 5:36, 2 users, load average: 0.22, 0.18, 0.21
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.0 us, 1.2 sy, 0.0 ni, 94.5 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 7551.8 total, 220.8 free, 7008.6 used, 322.3 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 295.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22739 root 20 0 8646580 5.0g 14500 S 23.3 68.2 1485:21 java
1563 root 20 0 1005204 13264 2308 S 0.3 0.2 64:57.91 /usr/local/clou
859 root 20 0 574296 11484 188 S 0.0 0.1 1:33.52 tuned
380 root 20 0 47652 10988 10636 S 0.0 0.1 0:03.24 systemd-journal
我的疑问是这两个数据到底是怎么算的 [捂脸] ,为啥 free 显示占用 6.8G ,但是 top 里只看到 5.0G 的内存占用。
目前有点怀疑是否是内存泄露导致?还是因为 top 内统计不到堆外内存之类的?
求教大佬们解惑,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.