Linux释放内存缓存

问题描述:
一台服务器运行着3个tomcat,服务器内存为128G,有一天发现内存使用95%了,
网上搜索了下,说是通过设置环境变量来改变arena的数量,例如export MALLOC_ARENA_MAX=1 内容写的比较复杂,可能是glibc为了分配内存的性能的问题,也可能是JDK版本的问题,如下:
http://blog.csdn.net/chen19870707/article/details/43202679
http://blog.2baxb.me/archives/918

继续查看问题,手动停止了tomcat业务,但是内存还是不能释放,想到直接释放下内存缓存,的确很有效,如下:
[root@server05 tomcat1]# sync 注意:在清空缓存之前使用sync命令同步数据到磁盘
[root@server05 tomcat1]# cat /proc/sys/vm/drop_caches
0
[root@server05 tomcat1]#  free -m
             total       used       free     shared    buffers     cached
Mem:        129007     125052       3955          0        255       4008
-/+ buffers/cache:     120788       8219
Swap:         7999          0       7999

[root@server05 tomcat1]# echo 3 > /proc/sys/vm/drop_caches

[root@server05 ~]# free -g //发现缓存明显减少了
             total       used       free     shared    buffers     cached
Mem:           125          4        121          0          0          0
-/+ buffers/cache:          4        121
Swap:            7          0          7

释放后在修改回去echo 0 > /proc/sys/vm/drop_caches,启动tomcat业务,正常了。


参考:

drop_caches
Writing to this will cause thekernel to drop clean caches, dentries and
inodes from memory, causing thatmemory to become free.
To free pagecache:
         echo1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
         echo2 > /proc/sys/vm/drop_caches
To free pagecache, dentries andinodes:
         echo3 > /proc/sys/vm/drop_caches
As this is a non-destructiveoperation and dirty objects are not freeable, the
user should run `sync' first.
http://www.kernel.org/doc/Documentation/sysctl/vm.txt
默认是0,1表示清空页缓存,2表示清空inode和目录树缓存,3清空所有的缓存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值