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]