Hi Kanchana,

Java processes use two types of memory: the "heap" (which is garbage collected), and "PermGen" memory (which is not garbage collected).

Generally speaking, you won't run out of heap memory unless your application is set up so that the memory for all the objects being used at a single moment (and thus, which can't be garbage collected) is greater than the heap space. In this case, you would only increase the amount of heap memory associated with a process to lower the frequency at which the application needs to run the garbage-collection process (the tradeoff: when the garbage collector /does/ run, it'll take longer). You can change the maximum heap-size for a process by adding the "-Xmx #m" flag to your "java" command. e.g. "java MyApplication -Xmx128m"

PermGen space, on the other hand, doesn't get garbage collected, so you need to ensure you're allocating enough to handle all that your application will need. Unfortunately with the web application classloader-system, every time you deploy an application without restarting the application server, more PermGen space is eaten up, and this is never recovered (not even if you undeploy an application). By default (at least, if you're using Sun Java), a Java process is given 32Mb of "PermGen" memory. If you have the "-server" flag set for your Java process, the default is 64Mb. I found that my mid-sized Hibernate/Spring/Tapestry application would eat up ~8Mb of PermGen memory every deploy; so increasing this memory to 128M+ will directly influence the number of deploys you can do before you'll have problems.

To set the upper-bound of PermGen space, then, use the flag: "-XX:MaxPermSize=#m". By the way, to add these flags, if you're using startup.bat on Windows you can add 'SET JAVA_OPTS=%JAVA_OPTS% -server -...' lines to the top of it to append flags to your JAVA_OPTS variable before the server is started using those flags. If you're on *nix, you can add 'export JAVA_OPTS="$JAVA_OPTS -server -...."' lines to your startup.sh.

Note that you can simply restart your application server to clear out all PermGen memory that was used with applications that you've undeployed. So, I'd use a memory profiler (I used YourKit) to see how much PermGen space is used by your application each deploy, and set your PermGen space high enough to cover all of your different apps side-by-side, plus some extra memory to handle the number of hot-deploys you expect yourself having to make at some point -- and then just remember to restart the server when you can after a hot-deploy or two.

Jim

Kanchana Welagedara wrote:
Hi All


I have developed 4 war files using Appfuse frame work.These war files
are independent.when I deployed any three war files the applications
are up and run.But when I deployed the 4th one (any) it throws a
PermGen exception.It has been copied in the bellow

1.Is this some thing related not setting the JAVA_OPTS ? or some security issue?

Can any body please Help me to revolve this problem.

Thanks
Kanchana


{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.21.2500;}\viewkind4\uc1\pard\f0\fs20 INFO:
XML validation disabled\par
AbandonedObjectPool is used
([EMAIL PROTECTED])\par
\par
   LogAbandoned: false\par
   RemoveAbandoned: true\par
   RemoveAbandonedTimeout: 60\par
AbandonedObjectPool is used
([EMAIL PROTECTED]
)\par
   LogAbandoned: false\par
   RemoveAbandoned: true\par
   RemoveAbandonedTimeout: 60\par
AbandonedObjectPool is used
([EMAIL PROTECTED])\par
\par
   LogAbandoned: false\par
   RemoveAbandoned: true\par
   RemoveAbandonedTimeout: 60\par
Nov 12, 2007 11:42:36 AM org.apache.catalina.core.StandardContext
resourcesStart\par
\par
SEVERE: Error starting static Resources\par
java.lang.IllegalArgumentException: Document base
C:\\Tomcat-5.5.20\\webapps\\spike\par
flow does not exist or is not a readable directory\par
        at 
org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.\par
java:140)\par
        at 
org.apache.catalina.core.StandardContext.resourcesStart(StandardConte\par
xt.java:3848)\par
        at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4\par
019)\par
        at 
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)\par
\par
        at 
org.apache.catalina.core.StandardHost.start(StandardHost.java:718)\par
        at 
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)\par
\par
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442\par
)\par
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:4\par
50)\par
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:709\par
)\par
        at org.apache.catalina.startup.Catalina.start(Catalina.java:551)\par
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\par
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.\par
java:39)\par
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces\par
sorImpl.java:25)\par
        at java.lang.reflect.Method.invoke(Method.java:585)\par
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)\par
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)\par
Nov 12, 2007 11:42:37 AM org.apache.catalina.core.StandardContext start\par
SEVERE: Error in resourceStart()\par
Nov 12, 2007 11:42:37 AM org.apache.catalina.core.StandardContext start\par
SEVERE: Error getConfigured\par
Nov 12, 2007 11:42:37 AM org.apache.catalina.core.StandardContext start\par
SEVERE: Context [/spikeflow] startup failed due to previous errors\par
Nov 12, 2007 11:42:37 AM org.apache.catalina.core.StandardContext stop\par
INFO: Container
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/\par
spikeflow] has not been started\par
AbandonedObjectPool is used
([EMAIL PROTECTED])\par
\par
   LogAbandoned: false\par
   RemoveAbandoned: true\par
   RemoveAbandonedTimeout: 60\par
Nov 12, 2007 11:43:26 AM org.apache.coyote.http11.Http11BaseProtocol start\par
INFO: Starting Coyote HTTP/1.1 on http-8282\par
Nov 12, 2007 11:43:27 AM org.apache.jk.common.ChannelSocket init\par
INFO: JK: ajp13 listening on /0.0.0.0:8009\par
Nov 12, 2007 11:43:27 AM org.apache.jk.server.JkMain start\par
INFO: Jk running ID=0 time=0/62  config=null\par
Nov 12, 2007 11:43:27 AM org.apache.catalina.storeconfig.StoreLoader load\par
INFO: Find registry server-registry.xml at classpath resource\par
Nov 12, 2007 11:43:27 AM org.apache.catalina.startup.Catalina start\par
INFO: Server startup in 176718 ms\par
[TiphAdmin] ERROR [http-8282-Processor25]
ClickstreamListener.sessionDestroyed(6\par
0) |\par
java.lang.NullPointerException\par
        at 
com.opensymphony.clickstream.ClickstreamListener.sessionDestroyed(Cli\par
ckstreamListener.java:55)\par
        at 
org.apache.catalina.session.StandardSession.expire(StandardSession.ja\par
va:687)\par
        at 
org.apache.catalina.session.StandardSession.isValid(StandardSession.j\par
ava:579)\par
        at 
org.apache.catalina.connector.Request.doGetSession(Request.java:2200)\par
\par
        at 
org.apache.catalina.connector.Request.getSession(Request.java:2024)\par
        at 
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.\par
java:831)\par
        at 
org.springframework.web.context.request.ServletRequestAttributes.<ini\par
t>(ServletRequestAttributes.java:81)\par
        at 
org.springframework.web.context.request.RequestContextListener.reques\par
tInitialized(RequestContextListener.java:63)\par
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV\par
alve.java:167)\par
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j\par
ava:126)\par
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j\par
ava:105)\par
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal\par
ve.java:107)\par
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav\par
a:148)\par
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java\par
:869)\par
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p\par
rocessConnection(Http11BaseProtocol.java:664)\par
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo\par
int.java:527)\par
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol\par
lowerWorkerThread.java:80)\par
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP\par
ool.java:684)\par
        at java.lang.Thread.run(Thread.java:595)\par
[TiphAdmin] ERROR [http-8282-Processor23] [jsp].invoke(704) |
Servlet.service()\par
for servlet jsp threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor23] [dispatcher].invoke(704) |
Servlet.ser\par
vice() for servlet dispatcher threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor23] [default].invoke(253) |
Servlet.servic\par
e() for servlet default threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[Tiph IMS] ERROR
[ContainerBackgroundProcessor[StandardEngine[Catalina]]] Clicks\par
treamListener.sessionDestroyed(60) |\par
java.lang.NullPointerException\par
        at 
com.opensymphony.clickstream.ClickstreamListener.sessionDestroyed(Cli\par
ckstreamListener.java:55)\par
        at 
org.apache.catalina.session.StandardSession.expire(StandardSession.ja\par
va:687)\par
        at 
org.apache.catalina.session.StandardSession.isValid(StandardSession.j\par
ava:579)\par
        at 
org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.ja\par
va:678)\par
        at 
org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase\par
.java:663)\par
        at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBas\par
e.java:1284)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1569)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1578)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1578)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.r\par
un(ContainerBase.java:1558)\par
        at java.lang.Thread.run(Thread.java:595)\par
[Tiph LGS] ERROR
[ContainerBackgroundProcessor[StandardEngine[Catalina]]] Clicks\par
treamListener.sessionDestroyed(60) |\par
java.lang.NullPointerException\par
        at 
com.opensymphony.clickstream.ClickstreamListener.sessionDestroyed(Cli\par
ckstreamListener.java:55)\par
        at 
org.apache.catalina.session.StandardSession.expire(StandardSession.ja\par
va:687)\par
        at 
org.apache.catalina.session.StandardSession.isValid(StandardSession.j\par
ava:579)\par
        at 
org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.ja\par
va:678)\par
        at 
org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase\par
.java:663)\par
        at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBas\par
e.java:1284)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1569)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1578)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p\par
rocessChildren(ContainerBase.java:1578)\par
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.r\par
un(ContainerBase.java:1558)\par
        at java.lang.Thread.run(Thread.java:595)\par
[TiphAdmin] ERROR [http-8282-Processor23] [jsp].invoke(704) |
Servlet.service()\par
for servlet jsp threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor23] [dispatcher].invoke(704) |
Servlet.ser\par
vice() for servlet dispatcher threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor23] [default].invoke(253) |
Servlet.servic\par
e() for servlet default threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor25] [jsp].invoke(704) |
Servlet.service()\par
for servlet jsp threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor25] [dispatcher].invoke(704) |
Servlet.ser\par
vice() for servlet dispatcher threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
[TiphAdmin] ERROR [http-8282-Processor25] [default].invoke(253) |
Servlet.servic\par
e() for servlet default threw exception\par
java.lang.OutOfMemoryError: PermGen space\par
Exception in thread "http-8282-Processor21"
java.lang.OutOfMemoryError: PermGen\par
space\par
Exception in thread "http-8282-Processor23"
java.lang.OutOfMemoryError: PermGen\par
space\par
Exception in thread
"ContainerBackgroundProcessor[StandardEngine[Catalina]]" jav\par
a.lang.OutOfMemoryError: PermGen space\par
\par
}

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to