jvm参数比较多,如下:
-Djava.util.logging.config.file=/root/online-tomcat/apache-tomcat-6.0.39/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Xmx2g
-Xms2g
-Xmn512m
-XX:SurvivorRatio=8
-XX:PermSize=128m
-XX:MaxPermSize=128m
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:/root/online/oomdump/gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/root/online/oomdump
-Djava.endorsed.dirs=/root/online-tomcat/apache-tomcat-6.0.39/endorsed
-Dcatalina.base=/root/online-tomcat/apache-tomcat-6.0.39
-Dcatalina.home=/root/online-tomcat/apache-tomcat-6.0.39
-Djava.io.tmpdir=/root/online-tomcat/apache-tomcat-6.0.39/temp
系统环境:
2核4GB
Ubuntu 12.04.1 LTS,
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
tomcat 6.0.39
mina 2.0.7
现象:
程序运行一天时间之后,Old区就会内存100%,且Full Gc之后,内存没有减少,之后,young区也在慢慢增长,之后由于没有内存空间,jvm一直gc,导致cpu100%,系统不可用。
通过jmap -dump:file=java_pid.hprof pid拿到内存镜像,使用MAT工具打开,发现mina里面的session对象占用了很多内存空间,也发现session里面却是存贮了很多数据,但是却无法定位到具体是哪里的引用导致无法回收这些数据。
急啊,都一个月了!!!!每天晚上重启服务器啊!!!!
RednaxelaFX大大在吗。。。。