在jboss启动的时候单独配置的run.conf,以按需分配较大的内存用于事务处理,在另一台服务器上同样的配置文件运行正常,但是在现在这台服务器上却总是提示下面的错误信息:
20:30:21,517 INFO [Server] Root Deployment Filename: jboss-service.xml
20:30:21,744 INFO [ServerInfo] Java version: 1.6.0_20,Sun Microsystems Inc.
20:30:21,744 INFO [ServerInfo] Java VM: Java HotSpot(TM) 64-Bit Server VM 16.3-b01,Sun Microsystems Inc.
20:30:21,744 INFO [ServerInfo] OS-System: Linux 2.6.18-164.el5,amd64
20:30:21,998 INFO [Server] Core system initialized
20:30:22,989 INFO [ServiceBindingManager] Initializing store
20:30:22,989 INFO [ServiceBindingManager] Using StoreURL: file:/alidata/jboss/jboss4.3/jboss/server/service-bindings.xml
20:30:23,492 INFO [WebService] Using RMI server codebase: http://112.124.53.48:8083/
20:30:23,494 INFO [Log4jService$URLWatchTimerTask] Configuring from URL: resource:jboss-log4j.xml
/alidata/jboss/jboss4.3/jboss/bin/run.sh: line 275: 29929 段错误 "$JAVA" $JAVA_OPTS -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" -classpath "$JBOSS_CLASSPATH" org.jboss.Main "$@"
run.conf的主要配置如下: JAVA_OPTS="-Xss128k -Xms1024m -Xmx2048m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -XX:+UseParallelGC -XX:ParallelGCThreads=16 -XX:+UseParallelOldGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
待配置修改成JAVA_OPTS="-Xms128m -Xmx2048m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true"后启动却发生另外的错误:
2013-12-18 20:20:35,134 DEBUG [com.arjuna.ats.txoj.logging.txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_6] - TORecoveryModule - second pass
2013-12-18 20:20:35,134 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.secondpass] Local XARecoveryModule - second pass
2013-12-18 20:20:48,429 ERROR [org.apache.catalina.connector.CoyoteAdapter] An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: PermGen space
通过问度娘知道PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
所以可以判断对应的-XX:MaxPermSize的默认值太小,于是在run.conf中增加了参数-XX:MaxPermSize=256M,同时也增加了一个常驻永久内存-XX:PermSize=128M,最终配置结果如下:
JAVA_OPTS="-Xms128m -Xmx2048m -XX:PermSize=128M -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true"
再次启动jboss,启动正常,应用可以正常访问了
通过跟踪日志发现了2个以前从没遇到的信息,目前还不知道是什么意思?
2013-12-18 20:35:48,165 DEBUG [org.jboss.web.tomcat.service.jasper.TagLibCache] Scanning for tlds in: file:/alidata/jboss/jboss4.3/jboss/server/wj/deploy/jboss-web.deployer/jsf-libs/jsf-impl.jar
2013-12-18 20:35:48,315 DEBUG [org.jboss.web.tomcat.service.jasper.TagLibCache] Scanning for tlds in: file:/alidata/jboss/jboss4.3/jboss/server/wj/deploy/jboss-web.deployer/jstl.jar
- 上一篇: 某电子商务网站大事记
- 下一篇: 关于不同用户session共享的问题
评论
动画制作
回复指内存的永久保存区域,