Your trace is at too higher level. Can you put a fully expanded copy of your
trace that goes down to the leaf methods.

At the moment your trace just shows that somewhere in the call stack under
some collection of conditions which are unknown to us the method and all
it's calls are generating lots of objects. What I'd like to see is the tree
expanded so I can see which methods are causing the gc'ed objects to be
created, because without your whole application running it's extremely
difficult to see the execution paths used to and thus determine which
methods are causing the problem. findValue in itself does not create
objects, so please post the fully expanded tree.
 

-----Original Message-----
From: Ing. Andrea Vettori [mailto:[EMAIL PROTECTED] 
Sent: 25 June 2007 08:34
To: Struts Users Mailing List
Subject: Re: [S2] App generate lot (2GB) of garbage!

Hi,

I've run a profile with yourkit (nice!) on my development platform.
Here is the most important evidence. I've opened three product listings and
a couple of product sheet in my site. Total garbage collected : 234 MB.

Of these 234 MB, 64 are produced by
org.jboss.remoting.transport.socket.ServerThread.run() so they are related
to communication between the business layer and the presentation layer.

Most of the other (156MB) are produced by
com.opensymphony.xwork2.DefaultActionInvocation.invoke() so it's something
related to struts.

Going down the stack trace through interceptors the "last class" is
org.apache.struts2.dispatcher.StrutsResultSupport.execute
(ActionInvocation) that has 146MB of generated garbage.

Now the interesting part :

These 146MB are divided into :

34MB generated by freemarker.template.Template.process(Object, Writer) 22MB
generated by
com.opensymphony.xwork2.util.OgnlValueStack.findValue(String)
10MB generated by org.eclipse.jdt.internal.compiler.Compiler.compile
(ICompilationUnit[])
7MB generated by freemarker.template.Configuration.getTemplate(String)
6MB generated by org.eclipse.jdt.internal.compiler.Compiler.<init>
(INameEnvironment, IErrorHandlingPolicy, Map, ICompilerRequestor,
IProblemFactory, boolean)

and a few other with less then 3MB each.

You can find the complete trace on http://www.andreavettori.com/trace/
trace1.html.

Do they seems normal numbers ???
I also don't understand if the difference between 146 and about 90
(=34+22+10+7+6+other small) is produced by
org.apache.struts2.dispatcher.StrutsResultSupport.execute
(ActionInvocation). That's over 50MB!

Now if someone think that this can help solve my problem and understand
where is produced this garbage I can run the same profile on the production
server, maybe for a couple of minutes.

I'm also really interested into knowing if you guys have ever checked gc
collections on your applications... I don't think I'm the only one that
writes "garbage producer applications" :).

Thank you and please don't leave me alone with this problem!

--
Ing. Andrea Vettori
Consulente per l'Information Technology



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to