jboss启动时的一个"段错误"问题

        在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
 

 

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

精彩评论