最近Tomcat老是宕机,平均2-3小时就会出现一次,每次的原因都说是OutOfMemoryError,也没有其他的提示,环境是linux+tomcat5.0.28+jdk1.4.2,我用JProfiler检测了一下,两次宕机都有这样的日志:第一次:Exception java.lang.OutOfMemoryError: requested 2048000 bytes for GrET* in /export/jdk142-update/ws/fcs/hotspot/src/share/vm/utilities/growableArray.cpp. Out of swap space?第二次:Exception in thread "TP-Processor31" java.lang.OutOfMemoryError: requested 10488 bytes for oop in /export/jdk142-update/ws/fcs/hotspot/src/share/vm/memory/systemDictionary.cpp. Out of swap space没使用JProfiler时没出现过这些,不知道是因为JProfiler分析出来OutOfMemoryError的原因了,还是因为使用JProfiler工具本身带来的问题,对于这种Out of swap space的错误应该怎么解决呢?
如果物理内存不够就考虑加内存吧
我用top命令看了一下,宕机的时候,Java使用的内存实际都不到400M,所以很是奇怪。
在catalina.sh 加上
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "如果还是出现的话,那你好好查你的程序,是不是那边错了,不然会缓存溢出的,举个很简单的例子,分页程序没写好,在数据量很大的时候,一下子把所有对象全部查出来。
只是申请了250KB的交换空间,况且才用了400MB的内存。
问题研究中。。