首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-11-17 
Linux内存cached过大的原因以及出现java.lang.OutOfMemoryError问题?最近进行上线前的压力测试,突然有天早

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.inline.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 必会非常小。

热点排行