Linux内存cached过大的原因以及出现java.lang.OutOfMemoryError问题

 

最近进行上线前的压力测试,突然有天早上上班来,发现测试服务器JAVA进程挂掉了,查找原因发现:

A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 4092 bytes for char in /BUILD_AREA/jdk6_23/hotspot/src/share/vm/utilities/stack.inlin
e.hpp. Out of swap space?
#
#  Internal Error (allocation.inline.hpp:39), pid=8116, tid=619821968
#  Error: char in /BUILD_AREA/jdk6_23/hotspot/src/share/vm/utilities/stack.inline.hpp
#
# JRE version: 6.0_23-b05
# Java VM: Java HotSpot(TM) Server VM (19.0-b09 mixed mode linux-x86 )
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp

 

这个实际上不只是物理内存不够了,可能还是硬盘不够了。差了一下机器是日志造成硬盘空间快满了,同时造成物理内存也不够了。
使用free -m used cached都很大,free 只剩下90多M了,因为cached读取缓存文件才会增大cached区,
所以 echo '' > access.log  echo '' > error.log 清空nginx log日志后硬盘空间也释放了30%,再用free -m查询内存used ,cached也释放出来了,
说明 就是因为读取并写入nginx日志文件,而日志文件过大造成cached区内存增大把内存占用完,cached主要负责缓存文件使用。同时硬盘空间也不够了。


Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值