free -gh 显示的物理内存是7G
1、ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20 查找到占用内存高的前20个进程
2、pidstat -r -p $pid 1 查看各活动进程的内存使用统计
3、在ECS 上先执行ps aux | grep java,找到JVM的pid;
然后再执行jmap -dump:format=b,file=heap.bin <pid>,得到heap dump文件。
4、ps -ef |grep java |grep Xms
ps -ef |grep java |grep Xmx
free -gh 显示的物理内存是7G,java的Xms与Xmx设置的都是5120m。
解决方案:
1、需要升级服务器的物理内存资源或者将Xms与Xmx写低
2、如果是buff/cache占用内存高
方法是:
echo 1 > /proc/sys/vm/drop_caches
当然,这个文件可以设置的值分别为1、2、3。它们所表示的含义为:
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。