IBM Support

ITCAMfJ2EE JBOSS Permgen java.lang.OutOfMemoryError: PermGen space

Troubleshooting


Problem

java.lang.OutOfMemoryError: PermGen space after ITCAMfJ2EE JBOSS data collector has been configured.

Symptom

After configuring ITCAMfJ2EE with JBOSS you receive java.lang.OutOfMemoryError:PermGen
<Trace Level="ERROR">
<Time Millis="1229549308530"> 2008-12-17 16:28:28.530-05:00</Time>
<Server Format="IP">wdws199</Server>
<ProductId>CYN</ProductId>
<Component>CYN.trc.toolkit.ai.bcm.BcmAnchor</Component>
<ProductInstance>6.1</ProductInstance>
<LogText><![CDATA[]]></LogText>
<Source FileName="com.ibm.tivoli.itcam.toolkit.ai.bcm.BcmAnchor"
Method="invokeProbifier(ClassInfo CI)"/>
<Thread>http-8443-191</Thread>
<Exception><![CDATA[java.lang.OutOfMemoryError: PermGen space
]]></Exception>
<Principal>wdws199/153.6.60.199</Principal>

Cause

Though the customer specified the follow options to try to enlarge the MaxPerSize, but it failed to pass to the JAVA VM because if the below "if" statement.

if [ "x$JAVA_OPTS" = "x" ]; then
#JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
JAVA_OPTS="-Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi

The reason is that we set a $JAVA_OPTS value when ITCAM installed. $JAVA_OPTS is not NULL any more, and "x$JAVA_OPTS" will not equal "x".So,the JAVA_OPTS
specified in the if block will not be performed. To pass the JAVA_OPTS to the JAVA VM correctly, we should move the JAVA_OPTS out of the "if" block as follows:
if [ "x$JAVA_OPTS" = "x" ]; then
#JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
JAVA_OPTS="-Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi
JAVA_OPTS="$JAVA_OPTS -Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

Environment

SOLARIS

Diagnosing The Problem

After configuring ITCAMfJ2EE with JBOSS you receive java.lang.OutOfMemoryError:PermGen
<Trace Level="ERROR">
<Time Millis="1229549308530"> 2008-12-17 16:28:28.530-05:00</Time>
<Server Format="IP">wdws199</Server>
<ProductId>CYN</ProductId>
<Component>CYN.trc.toolkit.ai.bcm.BcmAnchor</Component>
<ProductInstance>6.1</ProductInstance>
<LogText><![CDATA[]]></LogText>
<Source FileName="com.ibm.tivoli.itcam.toolkit.ai.bcm.BcmAnchor"
Method="invokeProbifier(ClassInfo CI)"/>
<Thread>http-8443-191</Thread>
<Exception><![CDATA[java.lang.OutOfMemoryError: PermGen space
]]></Exception>
<Principal>wdws199/153.6.60.199</Principal>

Resolving The Problem

Edit the run.conf JBOSS file and move or add the #JAVA_OPTS="-Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m outside of the if statement as the below example shows. The JAVA_OPTS statement will not get picked up because of the if statement.


if [ "x$JAVA_OPTS" = "x" ]; then


#JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
JAVA_OPTS="-Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi
>========= Add the below JAVA_OPTS statement here >=================================

JAVA_OPTS="$JAVA_OPTS -Xms768m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
In the run.conf file for JBOSS

[{"Product":{"code":"SSCH4B","label":"Tivoli Composite Application Manager for J2EE"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"ITCAM J2EE JBOSS","Platform":[{"code":"PF002","label":"AIX"}],"Version":"6.1","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Product Synonym

ITCAMforJ2EE

Document Information

Modified date:
17 June 2018

UID

swg21390229