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分配器中的緩存對象。