Re: [S2] App generate lot (2GB) of garbage! SOLVED

2007-06-30 Thread Ing. Andrea Vettori
As the last try to solve the problem I upgraded jboss to 4.2.0GA.  
This upgraded hibernate also.


Solved.

It seems that there was something in jboss and/or hibernate that  
produced the garbage forever...


However, my code still benefit a lot from disabling logging of struts  
classes in jboss and caching the freemarker BeanWrapper.


Hope to see this in the PerformanceTuning wiki pages.

If I found WHAT's wrong with the previous version I'll make a note here.

Thanks to all who have tried to help.


Il giorno 25/giu/07, alle ore 18:40, Ing. Andrea Vettori ha scritto:



I'll now try to profile the production server for a longer time  
and keep you informed.




Unfortunately the garbage is still produced. But I can't profile  
the production server because the profiler crashes!


Can anyone suggest a product to get the complete allocation object  
list ?


Maybe in the meantime the yourkit guys resolve the problem but I  
really want to leave this problem behind as soon as possibile!


Thank you


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



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



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



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



Re: [S2] App generate lot (2GB) of garbage! SOLVED

2007-06-30 Thread Dave Newton
--- Ing. Andrea Vettori wrote:
 However, my code still benefit a lot from disabling
 logging of struts  \classes in jboss and caching the

 freemarker BeanWrapper.
 
 Hope to see this in the PerformanceTuning wiki
 pages.

Logging and template caching, at least, are already on
the tuning page.

d.



   
Ready
 for the edge of your seat? 
Check out tonight's top picks on Yahoo! TV. 
http://tv.yahoo.com/

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



Re: [S2] App generate lot (2GB) of garbage! SOLVED

2007-06-30 Thread Ing. Andrea Vettori


Il giorno 30/giu/07, alle ore 13:54, Dave Newton ha scritto:


--- Ing. Andrea Vettori wrote:

However, my code still benefit a lot from disabling
logging of struts  \classes in jboss and caching the



freemarker BeanWrapper.

Hope to see this in the PerformanceTuning wiki
pages.


Logging and template caching, at least, are already on
the tuning page.


yes, logging is cited but a couple more lines on how to disable it on  
log4j will be helpful to many.


And I don't mean template caching but BeanWrapper model caching  
that's not enabled by default and moreover it does not exist a struct  
option to enable (jira already opened).


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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-27 Thread Guillaume Carré

2007/6/23, Ing. Andrea Vettori [EMAIL PROTECTED]:

yes the templates are into

WEB-INFO/templates


you have to put them in tour WEB-APP root, meaning the directory
directly above WEB-INF

Freemarker won't find the templates in your WEB-INF directory, meaning
freemarker won't cache them
you might get a performance boost and less generated garbage by
putting the templates in the right directory...
--
Guillaume Carré

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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-27 Thread Ing. Andrea Vettori

Thanks

In fact they are already there! I made a mistake writing the email...

Il giorno 27/giu/07, alle ore 22:05, Guillaume Carré ha scritto:


2007/6/23, Ing. Andrea Vettori [EMAIL PROTECTED]:

yes the templates are into

WEB-INFO/templates


you have to put them in tour WEB-APP root, meaning the directory
directly above WEB-INF

Freemarker won't find the templates in your WEB-INF directory, meaning
freemarker won't cache them
you might get a performance boost and less generated garbage by
putting the templates in the right directory...
--
Guillaume Carré

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



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



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



RE: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Al Sutton
Just went to look at the full trace and got a;

Forbidden
You don't have permission to access /trace/ on this server.

 

-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]



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori

It's because the complete link ends with trace1.html

The email program truncated the link into two lines...

Thank you!

Il giorno 25/giu/07, alle ore 09:42, Al Sutton ha scritto:


Just went to look at the full trace and got a;

Forbidden
You don't have permission to access /trace/ on this server.



-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]



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori

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]



RE: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Al Sutton
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]



RE: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Al Sutton
First thing I'd suggest; Turn off debug mode! It seems a chunk of the
Gced objects are coming from preparing strings for log statements which are
only activated when debug mode is on (for example;
Com.opensymphony.xwork2.util.InstantiatingNullHandler.nullPropertyValue(Map,
Object, Object) accounts for 5% of Gced objects, of which nearly the entire
5% comes from StringBuilter and Log4JLoggerdebug which are only used when
debug mode is on).

Secondly it does seem as though there's anything wildly wrong here, there
aren't any single methods which have large Gced object counts indicating
there isn't a big bottleneck (yes, some show 30+%, but that's fairly evenly
divided between the methods called by the 30+% method), which leads me to
one question, how much data are you trying to output? Can you do a Save
Source and tell me the size of the HTML file generated?, can you also
provide the call tree with a call count so we can see how many times the
methods are being executed?

Thanks,

Al.

 

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


Il giorno 25/giu/07, alle ore 09:50, Al Sutton ha scritto:

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

Done. It's on traceall.html. I expanded only the two most garbage producing
top call.

Thank you

--
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]



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori


Il giorno 25/giu/07, alle ore 11:21, Al Sutton ha scritto:

First thing I'd suggest; Turn off debug mode! It seems a chunk  
of the
Gced objects are coming from preparing strings for log statements  
which are

only activated when debug mode is on (for example;
Com.opensymphony.xwork2.util.InstantiatingNullHandler.nullPropertyValu 
e(Map,
Object, Object) accounts for 5% of Gced objects, of which nearly  
the entire
5% comes from StringBuilter and Log4JLoggerdebug which are only  
used when

debug mode is on).


How ??? devMode is already false in struts.xml

I've noticed that's a lot of log4j calls but don't know if they can  
be removed!


Thanks




Secondly it does seem as though there's anything wildly wrong here,  
there
aren't any single methods which have large Gced object counts  
indicating
there isn't a big bottleneck (yes, some show 30+%, but that's  
fairly evenly
divided between the methods called by the 30+% method), which leads  
me to
one question, how much data are you trying to output? Can you do a  
Save

Source and tell me the size of the HTML file generated?, can you also
provide the call tree with a call count so we can see how many  
times the

methods are being executed?

Thanks,

Al.



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


Il giorno 25/giu/07, alle ore 09:50, Al Sutton ha scritto:


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


Done. It's on traceall.html. I expanded only the two most garbage  
producing

top call.

Thank you

--
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]



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori


Il giorno 25/giu/07, alle ore 09:50, Al Sutton ha scritto:

Your trace is at too higher level. Can you put a fully expanded  
copy of your

trace that goes down to the leaf methods.


Done. It's on traceall.html. I expanded only the two most garbage  
producing top call.


Thank you

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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori

Ok

I changed the jboss configuration. I think it would be helpful to put  
an advice on the performance page of struts. If using jboss you  
should limit the debug string production with


   category name=com.opensymphony
  priority value=INFO/
   /category

   category name=ognl
  priority value=INFO/
   /category

   category name=freemarker
  priority value=INFO/
   /category


on log4j.xml

org.apache is already present in the default configuration.

I'll now try to profile the production server for a longer time and  
keep you informed.


Thank you



Il giorno 25/giu/07, alle ore 12:06, Al Sutton ha scritto:


The relevant piece of code is;

if (LOG.isDebugEnabled()) {
LOG.debug(Entering nullPropertyValue [target=+target+,
property=+property+]);
}

So the check is always present, but if the check is true (i.e.  
debug is on)
it also has to build the log message from the components in the  
debug call
(i.e. create Entering nullPropertyValue [target=, then add the  
variable
target, then add the string , property=, then add the variable  
property,

then add the character ]), which is what the StringBuilder is doing.

If the check is false, the call is not made, and the string doesn't  
need to
be built, and hence no StringBuilder will be created, hence you'll  
see a

drop of over 5% in your Gced object count for exactly the same test.

-Original Message-
From: Ing. Andrea Vettori [mailto:[EMAIL PROTECTED]
Sent: 25 June 2007 10:36
To: Al Sutton
Subject: Re: [S2] App generate lot (2GB) of garbage!

I'm using jboss...

I'll try to find the configuration.

Just curious :
so in the source code the production of that strings are on a  
condition that

check the log4j configuration ?
This mean that the overhead of checking the condition is always  
present ?


Il giorno 25/giu/07, alle ore 11:33, Al Sutton ha scritto:


Are you using log4j in your app or your appserver (e.g. Jetty uses
it)?

If so look for a log4j.properties file which turns debug mode on with
a line similar to;

log4j.rootLogger=DEBUG

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


Il giorno 25/giu/07, alle ore 11:21, Al Sutton ha scritto:

First thing I'd suggest; Turn off debug mode! It seems a  
chunk of
the Gced objects are coming from preparing strings for log  
statements

which are only activated when debug mode is on (for example;
Com.opensymphony.xwork2.util.InstantiatingNullHandler.nullPropertyVa 
l

u
e(Map,
Object, Object) accounts for 5% of Gced objects, of which nearly the
entire 5% comes from StringBuilter and Log4JLoggerdebug which are
only used when debug mode is on).


How ??? devMode is already false in struts.xml

I've noticed that's a lot of log4j calls but don't know if they  
can be

removed!

Thanks




Secondly it does seem as though there's anything wildly wrong here,
there aren't any single methods which have large Gced object counts
indicating there isn't a big bottleneck (yes, some show 30+%, but
that's fairly evenly divided between the methods called by the 30+%
method), which leads me to one question, how much data are you  
trying

to output? Can you do a Save Source and tell me the size of the
HTML file generated?, can you also provide the call tree with a call
count so we can see how many times the methods are being executed?

Thanks,

Al.



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


Il giorno 25/giu/07, alle ore 09:50, Al Sutton ha scritto:

Your trace is at too higher level. Can you put a fully expanded  
copy

of your trace that goes down to the leaf methods.


Done. It's on traceall.html. I expanded only the two most garbage
producing top call.

Thank you

--
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]



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





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





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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Ing. Andrea Vettori


I'll now try to profile the production server for a longer time and  
keep you informed.




Unfortunately the garbage is still produced. But I can't profile the  
production server because the profiler crashes!


Can anyone suggest a product to get the complete allocation object  
list ?


Maybe in the meantime the yourkit guys resolve the problem but I  
really want to leave this problem behind as soon as possibile!


Thank you


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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-25 Thread Martin Gainty

(Tomcat specific) LambdaProbe
http://www.lambdaprobe.org/d/index.htm

A number of Memory Profiler Utilities available here
http://www.java-source.net/open-source/profilers

HTH
M-
This email message and any files transmitted with it contain confidential
information intended only for the person(s) to whom this email message is
addressed.  If you have received this email message in error, please notify
the sender immediately by telephone or email and destroy the original
message without making a copy.  Thank you.

- Original Message - 
From: Ing. Andrea Vettori [EMAIL PROTECTED]

To: Struts Users Mailing List user@struts.apache.org
Cc: Al Sutton [EMAIL PROTECTED]
Sent: Monday, June 25, 2007 12:40 PM
Subject: Re: [S2] App generate lot (2GB) of garbage!




I'll now try to profile the production server for a longer time and  
keep you informed.




Unfortunately the garbage is still produced. But I can't profile the  
production server because the profiler crashes!


Can anyone suggest a product to get the complete allocation object  
list ?


Maybe in the meantime the yourkit guys resolve the problem but I  
really want to leave this problem behind as soon as possibile!


Thank you


--
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]



Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Ing. Andrea Vettori
There are three pages of issues on freemarker... I'll take a look at  
them and see if it's already present.


Thank you

Il giorno 22/giu/07, alle ore 19:17, Antonio Petrelli ha scritto:


Andrea,
please create a JIRA issue for this, and join the discussion at the
Struts Developers list too, if possible:
http://www.nabble.com/-S2--FreeMarker-usage-in-Struts-2-tf3965756.html

Antonio

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



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Ing. Andrea Vettori


Il giorno 22/giu/07, alle ore 19:20, Musachy Barroso ha scritto:

Yes, freemarker is used by Struts 2 tags to generate html. We could  
have a
property for the cache setting, but, does it solve your problem?  
(you said

it was partially resolved)



Most of the garbage is still there but at least about 400-500 MB  
generated from freemarker classes seems not there anymore.
I tried to use jrockit instead of sun jvm since it has a better  
memory analyzer but I haven't been able to produce a report yet.



May I ask more on how struts2 is using freemarker ?
How is freemarker used in a code snippet like this :

td width=34% valign=bottom class=fontNormale  
align=center

span
s:form name=RicercaArticoliVisOrdina  
action=RicercaArticoliVis
Ordina per s:select list=% 
{listaOrdinamentoArticoli} value=${numeri.ordinamento[0]}  
name=ordinamento onchange=document.RicercaArticoliVisOrdina.submit 
()/
s:hidden name=idRicerca value=$ 
{numeri.idRicerca}/

/s:form
/span
/td
td width=33% valign=bottom class=fontNormale  
align=right

span
s:form name=RicercaArticoliVisDimPagina  
action=RicercaArticoliVis
Mostra s:select list={5, 10, 20, 30}  
value=${numeri.dimPagina} name=dimPagina  
onchange=document.RicercaArticoliVisDimPagina.submit()/ prodotti  
per pagina
s:hidden name=idRicerca value=$ 
{numeri.idRicerca}/

/s:form
/span
/td

What object are created ?

Thanks












regards
musachy

On 6/20/07, Ing. Andrea Vettori [EMAIL PROTECTED] wrote:


I discussed the problem with the freemarker team and I used a
suggestion that PARTIALLY resolved.

They said :

=

You can use the code below to enable the model cache, assuming
myConfiguration is the reference to your Configuration object:

((BeansWrapper)myConfiguration.getObjectWrapper()).setUseCache(true)

and see if it helps you with your GC load levels.

=

This actually seems to happen.
In struts how can this be done ? I used :


 freemarker.template.Configuration fmc =
(freemarker.template.Configuration)
ServletActionContext.getServletContext().getAttribute
(FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY);
 if (fmc != null) {
 ((freemarker.ext.beans.BeansWrapper)fmc.getObjectWrapper
()).setUseCache(true);
 }


but I think there must be a configuration somewhere
(struts.properties?).


To completely solve my problem I really need to understand the
following :

How struts uses freemarker ? If i have a jsp page that contains html,
jsp tags, struts tags and jsp EL expression, where freemarker is  
used ?

I suppose that it's used ONLY on struts tags...

So if my page is composed primarly of jsp EL and jsp tags and a few
struts tags can I focus on struts tags only to try to understand why
the app is producing garbage ?


Thank you



Il giorno 19/giu/07, alle ore 12:58, Ing. Andrea Vettori ha scritto:


 Il giorno 19/giu/07, alle ore 12:07, Antonio Petrelli ha scritto:

 2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:

 Moreover I'm not using freemaker in my project! It's struts  
that's

 using it.
 My page are all jsps !!



 This is pretty strange... Is FreeMarker servlet declared in your
 web.xml?

 No it's not.

 I think that freemarker classes are used by struts internally for
 the themes... I use the simple theme.

 I really can't understand what's producing near 2GB of garbage
 every 10 seconds!


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



  
-

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


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



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





--
Hey you! Would you help me to carry the stone? Pink Floyd


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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Musachy Barroso

Struts 2 uses freemarker to generate the html for the tags, for example for
the form tag this template is used:

http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/form.ftl?view=markup

I was playing with jrockit also and trying to replicate the problem, but it
is kind of hard :). Do you have any testcase, or a page, something that
could help us replicate the problem? I also posted a note on the freemarker
list on how struts configures freemarker, which is on this class:

http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java?view=markup

On that same package there is an StrutsBeanWrapper which is the wrapper used
with freemarker. (I think you asked about it right? memory failing...it is
kind of late :) )

regards
musachy

On 6/23/07, Ing. Andrea Vettori [EMAIL PROTECTED] wrote:



Il giorno 22/giu/07, alle ore 19:20, Musachy Barroso ha scritto:

 Yes, freemarker is used by Struts 2 tags to generate html. We could
 have a
 property for the cache setting, but, does it solve your problem?
 (you said
 it was partially resolved)


Most of the garbage is still there but at least about 400-500 MB
generated from freemarker classes seems not there anymore.
I tried to use jrockit instead of sun jvm since it has a better
memory analyzer but I haven't been able to produce a report yet.


May I ask more on how struts2 is using freemarker ?
How is freemarker used in a code snippet like this :

 td width=34% valign=bottom class=fontNormale
align=center
 span
 s:form name=RicercaArticoliVisOrdina
action=RicercaArticoliVis
 Ordina per s:select list=%
{listaOrdinamentoArticoli} value=${numeri.ordinamento[0]}
name=ordinamento onchange=document.RicercaArticoliVisOrdina.submit
()/
 s:hidden name=idRicerca value=$
{numeri.idRicerca}/
 /s:form
 /span
 /td
 td width=33% valign=bottom class=fontNormale
align=right
 span
 s:form name=RicercaArticoliVisDimPagina
action=RicercaArticoliVis
 Mostra s:select list={5, 10, 20, 30}
value=${numeri.dimPagina} name=dimPagina
onchange=document.RicercaArticoliVisDimPagina.submit()/ prodotti
per pagina
 s:hidden name=idRicerca value=$
{numeri.idRicerca}/
 /s:form
 /span
 /td

What object are created ?

Thanks











 regards
 musachy

 On 6/20/07, Ing. Andrea Vettori [EMAIL PROTECTED] wrote:

 I discussed the problem with the freemarker team and I used a
 suggestion that PARTIALLY resolved.

 They said :

 =

 You can use the code below to enable the model cache, assuming
 myConfiguration is the reference to your Configuration object:

 ((BeansWrapper)myConfiguration.getObjectWrapper()).setUseCache(true)

 and see if it helps you with your GC load levels.

 =

 This actually seems to happen.
 In struts how can this be done ? I used :


  freemarker.template.Configuration fmc =
 (freemarker.template.Configuration)
 ServletActionContext.getServletContext().getAttribute
 (FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY);
  if (fmc != null) {
  ((freemarker.ext.beans.BeansWrapper)fmc.getObjectWrapper
 ()).setUseCache(true);
  }


 but I think there must be a configuration somewhere
 (struts.properties?).


 To completely solve my problem I really need to understand the
 following :

 How struts uses freemarker ? If i have a jsp page that contains html,
 jsp tags, struts tags and jsp EL expression, where freemarker is
 used ?
 I suppose that it's used ONLY on struts tags...

 So if my page is composed primarly of jsp EL and jsp tags and a few
 struts tags can I focus on struts tags only to try to understand why
 the app is producing garbage ?


 Thank you



 Il giorno 19/giu/07, alle ore 12:58, Ing. Andrea Vettori ha scritto:

 
  Il giorno 19/giu/07, alle ore 12:07, Antonio Petrelli ha scritto:
 
  2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:
 
  Moreover I'm not using freemaker in my project! It's struts
 that's
  using it.
  My page are all jsps !!
 
 
 
  This is pretty strange... Is FreeMarker servlet declared in your
  web.xml?
 
  No it's not.
 
  I think that freemarker classes are used by struts internally for
  the themes... I use the simple theme.
 
  I really can't understand what's producing near 2GB of garbage
  every 10 seconds!
 
 
  --
  Ing. Andrea Vettori
  Consulente per l'Information Technology
 
 
 
 
 -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 

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



 -
 To unsubscribe, e-mail: 

Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Ing. Andrea Vettori


Il giorno 23/giu/07, alle ore 09:19, Musachy Barroso ha scritto:

Struts 2 uses freemarker to generate the html for the tags, for  
example for

the form tag this template is used:

http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/ 
resources/template/simple/form.ftl?view=markup


So struts asks freemarker to generate the html for the struts tag.  
Freemarker looks at the template and outputs the html based on it.  
Freemarker is caching the template in memory to not have to read them  
from the disk every time. Looks similar to what jsp compiler do with  
the difference that jsp tags have hard-coded html and freemarker  
has template based html. Am I right ?


But what's the various BeanWrappers doing in the previous process ?  
It's about the passing of parameters from the struts tag to  
FreeMarker ?
It's the BeanWrappers that was consuming a lot of memory before I  
enabled caching of them.





I was playing with jrockit also and trying to replicate the  
problem, but it
is kind of hard :). Do you have any testcase, or a page, something  
that

could help us replicate the problem?



The jrcmd command that's used to profiling is not working on my  
server :( I posted a question on the bea forum This problem is a  
hell !!! :)


I don't think I can produce a testcase but I try to tell how is the  
application organized (btw you can view the site on  
www.elettrotop.com but don't think this can help to solve the  
problem...).


I have a MaxDB (formerly SAPDB) database that's accessed ONLY through  
EJB3 session beans / entity beans. I'm using JBoss 4.0.5-GA which  
uses Hibernate 3.
The view is composed of struts2 actions, a few servlets producing  
PDFs and images and jsp pages.


All the view logic is inside struts2 actions and they access the  
database using RMI call to stateless and stateful session beans. Now  
it's all inside the same server but this architecture gives me the  
option to separate the web interface (with the option to have more  
than one web server) from the business logic (maybe on another  
server) and the database (maybe on another server).


I've implemented a lot of caching of (mostly read-only) database data  
in the struts actions but the profiler says that less than 100MB are  
used by my classes. Also the cache lasts at least a Session life so  
it can't be part of the 2GB that's collected since this happens every  
10 seconds or less (using sun jvm). I've checked I don't have  
_unfortunately_ a lot sessions that dies every 10 seconds :)


Most used page of the site is the product listings where the user can  
browse an in ram list of dataobjects created with an ejb3 query in  
a session bean. The entire list is returned and cached for struts2  
action as said above.


When I first profiled the app, the most ram demanding classes was  
freemarker.ext.beans. generated HashMaps (between 400 and 500 mb).



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Guillaume Carré

2007/6/23, Ing. Andrea Vettori [EMAIL PROTECTED]:

So struts asks freemarker to generate the html for the struts tag.
Freemarker looks at the template and outputs the html based on it.
Freemarker is caching the template in memory to not have to read them
from the disk every time.


freemarker caches the templates only if there are in the WEB_APP root,
have you copied the /template directory from the struts2 jar there?

see: http://struts.apache.org/2.x/docs/performance-tuning.html
--
Guillaume Carré

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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-23 Thread Ing. Andrea Vettori

yes the templates are into

WEB-INFO/templates


Il giorno 23/giu/07, alle ore 11:28, Guillaume Carré ha scritto:


2007/6/23, Ing. Andrea Vettori [EMAIL PROTECTED]:

So struts asks freemarker to generate the html for the struts tag.
Freemarker looks at the template and outputs the html based on it.
Freemarker is caching the template in memory to not have to read them
from the disk every time.


freemarker caches the templates only if there are in the WEB_APP root,
have you copied the /template directory from the struts2 jar there?

see: http://struts.apache.org/2.x/docs/performance-tuning.html
--
Guillaume Carré

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



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-22 Thread Musachy Barroso

Yes, freemarker is used by Struts 2 tags to generate html. We could have a
property for the cache setting, but, does it solve your problem? (you said
it was partially resolved)

regards
musachy

On 6/20/07, Ing. Andrea Vettori [EMAIL PROTECTED] wrote:


I discussed the problem with the freemarker team and I used a
suggestion that PARTIALLY resolved.

They said :

=

You can use the code below to enable the model cache, assuming
myConfiguration is the reference to your Configuration object:

((BeansWrapper)myConfiguration.getObjectWrapper()).setUseCache(true)

and see if it helps you with your GC load levels.

=

This actually seems to happen.
In struts how can this be done ? I used :


 freemarker.template.Configuration fmc =
(freemarker.template.Configuration)
ServletActionContext.getServletContext().getAttribute
(FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY);
 if (fmc != null) {
 ((freemarker.ext.beans.BeansWrapper)fmc.getObjectWrapper
()).setUseCache(true);
 }


but I think there must be a configuration somewhere
(struts.properties?).


To completely solve my problem I really need to understand the
following :

How struts uses freemarker ? If i have a jsp page that contains html,
jsp tags, struts tags and jsp EL expression, where freemarker is used ?
I suppose that it's used ONLY on struts tags...

So if my page is composed primarly of jsp EL and jsp tags and a few
struts tags can I focus on struts tags only to try to understand why
the app is producing garbage ?


Thank you



Il giorno 19/giu/07, alle ore 12:58, Ing. Andrea Vettori ha scritto:


 Il giorno 19/giu/07, alle ore 12:07, Antonio Petrelli ha scritto:

 2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:

 Moreover I'm not using freemaker in my project! It's struts that's
 using it.
 My page are all jsps !!



 This is pretty strange... Is FreeMarker servlet declared in your
 web.xml?

 No it's not.

 I think that freemarker classes are used by struts internally for
 the themes... I use the simple theme.

 I really can't understand what's producing near 2GB of garbage
 every 10 seconds!


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



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


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



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





--
Hey you! Would you help me to carry the stone? Pink Floyd


Re: [S2] App generate lot (2GB) of garbage!

2007-06-22 Thread Antonio Petrelli

Andrea,
please create a JIRA issue for this, and join the discussion at the
Struts Developers list too, if possible:
http://www.nabble.com/-S2--FreeMarker-usage-in-Struts-2-tf3965756.html

Antonio

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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-20 Thread Ing. Andrea Vettori
I discussed the problem with the freemarker team and I used a  
suggestion that PARTIALLY resolved.


They said :

=

You can use the code below to enable the model cache, assuming
myConfiguration is the reference to your Configuration object:

((BeansWrapper)myConfiguration.getObjectWrapper()).setUseCache(true)

and see if it helps you with your GC load levels.

=

This actually seems to happen.
In struts how can this be done ? I used :


freemarker.template.Configuration fmc =  
(freemarker.template.Configuration) 
ServletActionContext.getServletContext().getAttribute 
(FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY);

if (fmc != null) {
((freemarker.ext.beans.BeansWrapper)fmc.getObjectWrapper 
()).setUseCache(true);

}


but I think there must be a configuration somewhere  
(struts.properties?).



To completely solve my problem I really need to understand the  
following :


How struts uses freemarker ? If i have a jsp page that contains html,  
jsp tags, struts tags and jsp EL expression, where freemarker is used ?

I suppose that it's used ONLY on struts tags...

So if my page is composed primarly of jsp EL and jsp tags and a few  
struts tags can I focus on struts tags only to try to understand why  
the app is producing garbage ?



Thank you



Il giorno 19/giu/07, alle ore 12:58, Ing. Andrea Vettori ha scritto:



Il giorno 19/giu/07, alle ore 12:07, Antonio Petrelli ha scritto:


2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Moreover I'm not using freemaker in my project! It's struts that's
using it.
My page are all jsps !!




This is pretty strange... Is FreeMarker servlet declared in your  
web.xml?


No it's not.

I think that freemarker classes are used by struts internally for  
the themes... I use the simple theme.


I really can't understand what's producing near 2GB of garbage  
every 10 seconds!



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



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



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Ing. Andrea Vettori

Anyone ?

Anyone knows who's calling freemarker.ext.beans methods ?


Il giorno 17/giu/07, alle ore 19:08, Ing. Andrea Vettori ha scritto:


Hi,
I've a struts 2.0.8 app that runs on Linux and JBoss 4.0.5. I'ts an  
e-commerce site.


I have the following problem.
The app seems to generate lot of garbage in RAM (young gen) that  
the gc correctly collects.
But when there is more than a few users on the site, that amount of  
garbage is generated about every 10 seconds or less depending on  
the number of users. This cause a lot of cpu usage...


Tracking the memory usage with the hprof agent I found that a lot  
of memory is used by freemarker.* classes on HashMaps.


I have devMode turned off, have the template dir on the root of  
the war file and I have the freemarker.properties file into the  
classes dir inside WEB-INF with template_update_delay=6.


Any hint on WHY the application is generating such big amount of  
garbage ?


Thank you

Here is top memory usage and relative traces :


bytes 192,090,608
obj number: 1,263,754
class: java.util.HashMap$Entry[]

TRACE 352396:
java.util.HashMap.init(HashMap.java:203)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
freemarker.ext.beans.StringModel.init(StringModel.java:90)
freemarker.ext.beans.StringModel$1.create(StringModel.java:75)


bytes: 143,560,048
obj number: 944,474
class: java.util.HashMap$Entry[]

TRACE 352387:
java.util.HashMap.init(HashMap.java:203)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
freemarker.ext.beans.StringModel.init(StringModel.java:90)
freemarker.ext.beans.MapModel.init(MapModel.java:105)


bytes: 141,327,104
obj number: 2,208,236
class: java.util.HashMap

TRACE 352386:
java.util.AbstractMap.init(AbstractMap.java:53)
java.util.HashMap.init(HashMap.java:200)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
freemarker.ext.beans.StringModel.init(StringModel.java:90)



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



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



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Antonio Petrelli

2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Anyone knows who's calling freemarker.ext.beans methods ?




Did you try asking the FreeMarker team?

Antonio


Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Ing. Andrea Vettori

yes but their list and forum seems almost dead...

I hope someone in the struts team can help me found what's the  
problem...



Il giorno 19/giu/07, alle ore 11:39, Antonio Petrelli ha scritto:


2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Anyone knows who's calling freemarker.ext.beans methods ?




Did you try asking the FreeMarker team?

Antonio


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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Ing. Andrea Vettori
Moreover I'm not using freemaker in my project! It's struts that's  
using it.

My page are all jsps !!

Il giorno 19/giu/07, alle ore 11:41, Ing. Andrea Vettori ha scritto:


yes but their list and forum seems almost dead...

I hope someone in the struts team can help me found what's the  
problem...



Il giorno 19/giu/07, alle ore 11:39, Antonio Petrelli ha scritto:


2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Anyone knows who's calling freemarker.ext.beans methods ?




Did you try asking the FreeMarker team?

Antonio


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




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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Antonio Petrelli

2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Moreover I'm not using freemaker in my project! It's struts that's
using it.
My page are all jsps !!




This is pretty strange... Is FreeMarker servlet declared in your web.xml?

Antonio


Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Ing. Andrea Vettori


Il giorno 19/giu/07, alle ore 12:07, Antonio Petrelli ha scritto:


2007/6/19, Ing. Andrea Vettori [EMAIL PROTECTED]:


Moreover I'm not using freemaker in my project! It's struts that's
using it.
My page are all jsps !!




This is pretty strange... Is FreeMarker servlet declared in your  
web.xml?


No it's not.

I think that freemarker classes are used by struts internally for the  
themes... I use the simple theme.


I really can't understand what's producing near 2GB of garbage every  
10 seconds!



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



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



Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Matt Filion
Without knowing much more about your application I dont know if we are 
going to be of much more help. Especially since most people here already 
have struts 2 apps running and dont have this issue. I have a couple of 
resources that might help you though while you dig through this issue.

You can see some of the source on the objects referanced in your memory 
trace. Seeing the source of other objects is some times helpful.
http://www.koders.com/?s=freemarker.ext.util.ModelFactoryla=Java

It looks like you already have this one cause you mention addressing a 
couple of the items. The last one mentions using velocity tags over struts 
tags not sure if this would be your issue, but might be worth looking at.
http://struts.apache.org/2.x/docs/performance-tuning.html

Matt Filion
CSC - GTS -- Raytheon - ISF
[EMAIL PROTECTED]



This is a PRIVATE message. If you are not the intended recipient, please 
delete without copying and kindly advise us by e-mail of the mistake in 
delivery. NOTE: Regardless of content, this e-mail shall not operate to 
bind CSC to any order or other contract unless pursuant to explicit 
written agreement or government initiative expressly permitting the use of 
e-mail for such purpose.





Ing. Andrea Vettori [EMAIL PROTECTED] 
06/19/2007 02:19 AM
Please respond to
Struts Users Mailing List user@struts.apache.org


To
Struts Users Mailing List user@struts.apache.org
cc

Subject
Re: [S2] App generate lot (2GB) of garbage!






Anyone ?

Anyone knows who's calling freemarker.ext.beans methods ?


Il giorno 17/giu/07, alle ore 19:08, Ing. Andrea Vettori ha scritto:

 Hi,
 I've a struts 2.0.8 app that runs on Linux and JBoss 4.0.5. I'ts an 
 e-commerce site.

 I have the following problem.
 The app seems to generate lot of garbage in RAM (young gen) that 
 the gc correctly collects.
 But when there is more than a few users on the site, that amount of 
 garbage is generated about every 10 seconds or less depending on 
 the number of users. This cause a lot of cpu usage...

 Tracking the memory usage with the hprof agent I found that a lot 
 of memory is used by freemarker.* classes on HashMaps.

 I have devMode turned off, have the template dir on the root of 
 the war file and I have the freemarker.properties file into the 
 classes dir inside WEB-INF with template_update_delay=6.

 Any hint on WHY the application is generating such big amount of 
 garbage ?

 Thank you

 Here is top memory usage and relative traces :


 bytes 192,090,608
 obj number: 1,263,754
 class: java.util.HashMap$Entry[]

 TRACE 352396:
java.util.HashMap.init(HashMap.java:203)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
 freemarker.ext.beans.StringModel.init(StringModel.java:90)
 freemarker.ext.beans.StringModel$1.create(StringModel.java:75)


 bytes: 143,560,048
 obj number: 944,474
 class: java.util.HashMap$Entry[]

 TRACE 352387:
java.util.HashMap.init(HashMap.java:203)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
 freemarker.ext.beans.StringModel.init(StringModel.java:90)
freemarker.ext.beans.MapModel.init(MapModel.java:105)


 bytes: 141,327,104
 obj number: 2,208,236
 class: java.util.HashMap

 TRACE 352386:
java.util.AbstractMap.init(AbstractMap.java:53)
java.util.HashMap.init(HashMap.java:200)
freemarker.ext.beans.BeanModel.init(BeanModel.java:117)
 freemarker.ext.beans.StringModel.init(StringModel.java:90)



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



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


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



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




Re: [S2] App generate lot (2GB) of garbage!

2007-06-19 Thread Oguz Kologlu
You may want to have a look at using a bit better profiler that can  
tell you what is instantiating the freemarker classes.


I've noticed Code Gear (ex Borland) have released a free version of  
JBuilder with OptimizeIt built in:


Have a look at http://www.codegear.com/eclipse_supercharged/index.html

Let us know if you get any results

HTH
Oz

 http://www.codegear.com/eclipse_supercharged/index.html
On 20/06/2007, at 4:00 AM, Matt Filion wrote:


Without knowing much more about your application I dont know if we are
going to be of much more help. Especially since most people here  
already
have struts 2 apps running and dont have this issue. I have a  
couple of

resources that might help you though while you dig through this issue.

You can see some of the source on the objects referanced in your  
memory

trace. Seeing the source of other objects is some times helpful.
http://www.koders.com/?s=freemarker.ext.util.ModelFactoryla=Java

It looks like you already have this one cause you mention addressing a
couple of the items. The last one mentions using velocity tags over  
struts
tags not sure if this would be your issue, but might be worth  
looking at.

http://struts.apache.org/2.x/docs/performance-tuning.html

Matt Filion
CSC - GTS -- Raytheon - ISF
[EMAIL PROTECTED]


-- 
-- 

This is a PRIVATE message. If you are not the intended recipient,  
please
delete without copying and kindly advise us by e-mail of the  
mistake in
delivery. NOTE: Regardless of content, this e-mail shall not  
operate to

bind CSC to any order or other contract unless pursuant to explicit
written agreement or government initiative expressly permitting the  
use of

e-mail for such purpose.
-- 
-- 






Ing. Andrea Vettori [EMAIL PROTECTED]
06/19/2007 02:19 AM
Please respond to
Struts Users Mailing List user@struts.apache.org


To
Struts Users Mailing List user@struts.apache.org
cc

Subject
Re: [S2] App generate lot (2GB) of garbage!






Anyone ?

Anyone knows who's calling freemarker.ext.beans methods ?


Il giorno 17/giu/07, alle ore 19:08, Ing. Andrea Vettori ha scritto:


Hi,
I've a struts 2.0.8 app that runs on Linux and JBoss 4.0.5. I'ts an
e-commerce site.

I have the following problem.
The app seems to generate lot of garbage in RAM (young gen) that
the gc correctly collects.
But when there is more than a few users on the site, that amount of
garbage is generated about every 10 seconds or less depending on
the number of users. This cause a lot of cpu usage...

Tracking the memory usage with the hprof agent I found that a lot
of memory is used by freemarker.* classes on HashMaps.

I have devMode turned off, have the template dir on the root of
the war file and I have the freemarker.properties file into the
classes dir inside WEB-INF with template_update_delay=6.

Any hint on WHY the application is generating such big amount of
garbage ?

Thank you

Here is top memory usage and relative traces :


bytes 192,090,608
obj number: 1,263,754
class: java.util.HashMap$Entry[]

TRACE 352396:
   java.util.HashMap.init(HashMap.java:203)
   freemarker.ext.beans.BeanModel.init 
(BeanModel.java:117)

freemarker.ext.beans.StringModel.init(StringModel.java:90)
freemarker.ext.beans.StringModel$1.create(StringModel.java:75)


bytes: 143,560,048
obj number: 944,474
class: java.util.HashMap$Entry[]

TRACE 352387:
   java.util.HashMap.init(HashMap.java:203)
   freemarker.ext.beans.BeanModel.init 
(BeanModel.java:117)

freemarker.ext.beans.StringModel.init(StringModel.java:90)
   freemarker.ext.beans.MapModel.init(MapModel.java: 
105)



bytes: 141,327,104
obj number: 2,208,236
class: java.util.HashMap

TRACE 352386:
   java.util.AbstractMap.init(AbstractMap.java:53)
   java.util.HashMap.init(HashMap.java:200)
   freemarker.ext.beans.BeanModel.init 
(BeanModel.java:117)

freemarker.ext.beans.StringModel.init(StringModel.java:90)



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



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



--
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]