Richard,

It's great to see that the latest 1.5.x code appears to have resolve your issue.

However, I wonder if your issue occurs in web containers other than Tomcat. I found this interesting thread:
Source:  http://www.mail-archive.com/d...@tomcat.apache.org/msg05273.html

BodyContentImpls are pooled and reused since it makes JSP processing significantly faster. _*If the application is evil, and uses body tags with huge bodies (it seems to be the case here), then there could be a problem.*_

Large buffers may be discarded after usage, by setting the "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER" system property to "true". _*Unfortunately, performance will go down and GC activity will go up.*_

If you would like to limit the amount of resident memory that is used, you can disable pooling of buffer objects completely using the "org.apache.jasper.runtime.JspFactoryImpl.USE_POOL" system property set to "false". _*The performance will go down further due to object allocations and GC activity, but you may have a few CPU cycles to spare. *__*
*_
With that said, have you tried testing _*without*_ any of the "MemoryLeakPrecaution" tuning settings below?

As Ben re-wrote the tags to stream I wonder if you would still see the same memory issues????

--Nikolaos

ASIDE: I know your settings are for a test system but its always a good idea to make -Xms = -Xmx AND -XX:PermSize = -XX:MaxPermSize as there have been traditionally Java bugs related to the expansion of the Heap and / or PermGen space but moreover so they don't have to grow as it requires re-allocating and expanding memory space. Again this is strongly recommended in Prod but a good thing to do for all around as well (especially during Testing).




Richard Hauswald wrote:
Mortan,
I'm using the following settings for tomcat:

CATALINA_OPTS='-Djava.awt.headless=true -Dserver.info=IIS -server
-Xmx128M -Xms80M -XX:MaxPermSize=60M -XX:PermSize=30M'

#MemoryLeakPrecausions
CATALINA_OPTS="$CATALINA_OPTS
-Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
-Dorg.apache.jasper.runtime.JspFactoryImpl.USE_POOL=false
-Dorg.apache.jasper.runtime.JspFactoryImpl.POOL_SIZE=0"

#GarbageCollectionTuning
CATALINA_OPTS="$CATALINA_OPTS -XX:+CMSClassUnloadingEnabled
-XX:-UseGCOverheadLimit"

#DEBUG using jmx console
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=4223
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"

#DEBUG using jmx console -->
just run jconsole and connect to the host on port defined in
com.sun.management.jmxremote.port.
Regards,
Richard

On Thu, May 20, 2010 at 10:35 AM, Morten Matras <morten.mat...@gmail.com> wrote:
Hi all
Thanks a lot for your efforts.
To test these suggestions please advise on the best possible JVM settings.
Regards
Morten Matras

2010/5/20 Richard Hauswald <richard.hausw...@googlemail.com>
Hi folks
thanks for all the input and effort you put in this issue. Thanks for
the jar package. Tested it yesterday and all the memory issues are
gone. The memory consumption is optimized by factor 7 in my case! User
experience is also much better now since layouts are streamed. Ben,
thankz for the new layout tag with the old interface! Really good
work!
Regards,
A happy Richard




On Wed, May 19, 2010 at 7:10 PM, KR <k-no-s...@a4consulting.nl> wrote:
Ben,

Thanks for all the work!

I'm running this in Tomcat (Windows XP). The info.jsp works fine under
Stripes-1.5.3 but result in an infinite loop when used with
Strips-1.5.4-beta (Revision: 1236).


-----------------------------------------------------
These are the errors in the Tomcat log file:

May 19, 2010 6:58:53 PM org.apache.catalina.core.ApplicationContext log
INFO:

The server side component of the HTTP Monitor has detected a
java.lang.StackOverflowError.
This happens when there is an infinite loop in the web module.
Correct the cause of the infinite loop before running the web module
again.


May 19, 2010 6:58:53 PM org.apache.catalina.core.ApplicationDispatcher
invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.StackOverflowError
       at

org.apache.catalina.session.StandardSession.isValid(StandardSession.java:559)
       at
org.apache.catalina.connector.Request.doGetSession(Request.java:2350)
       at
org.apache.catalina.connector.Request.getSession(Request.java:2098)
       at

org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
       at

javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at

org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at

javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at

org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at

javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
(keeps repeating 216/544)


-----------------------------------------------------
info.jsp:

<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-render name="/WEB-INF/jsp/layout/OneColumn.jsp"
title="My App links"
menu="com.myapp.action.info.InfoMenu">
<s:layout-component name="body">
   <h1>Informatie</h1>
   <a href="/faq.html">F.a.q.</a><br>
   <s:link

beanclass="com.myapp.action.info.MethodCategoriesAction">Methods</s:link><br>
   <s:link
beanclass="com.myapp.action.info.LinksAction">Links</s:link><br>
</s:layout-component>
</s:layout-render>


-----------------------------------------------------
OneColumn.jsp:

<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-definition>
<s:layout-render name="/WEB-INF/jsp/layout/Base.jsp"
   title="${title}"
   metaTitle="${metaTitle}"
   metaDescription="${metaDescription}"
   metaKeywords="${metaKeywords}"
   metaCategory="${metaCategory}"
   metaRobots="${metaRobots}"
   menu="${menu}">
<s:layout-component name="head">
${head}
</s:layout-component>
<s:layout-component name="body">

<table border="0" align="center" cellpadding="0" cellspacing="0"
class="container">
<tr><td><div class="contentcontainer"><div class="kolom0">
${body}
</div></div></td></tr></table>

</s:layout-component>
</s:layout-render>
</s:layout-definition>


-----------------------------------------------------
Base.jsp:

<%...@page contentType="text/html;charset=utf-8" language="java" %>
<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-definition>
<s:layout-render name="/WEB-INF/jsp/layout/BaseHead.jsp"
   title="${title}"
   metaTitle="${metaTitle}"
   metaDescription="${metaDescription}"
   metaKeywords="${metaKeywords}"
   metaCategory="${metaCategory}"
   metaRobots="${metaRobots}"
   head="${head}"
   menu="${menu}"/>
<s:layout-component name="body"/>
<s:layout-render name="/WEB-INF/jsp/layout/BaseFoot.jsp" />
</s:layout-definition>


-----------------------------------------------------
BaseHead.jsp:

<%...@page contentType="text/html;charset=utf-8" language="java" %>
<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-definition>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html dir="ltr">
<head>
<title>${title}</title>
<meta http-equiv="Content-Type" content="text/html;charset=uft-8"/>
<meta http-equiv="Content-Style-Type" content="text/css"/>
etc,etc,etc,
<s:layout-component name="head"/>
<script type="text/javascript"
src="http://www.google-analytics.com/urchin.js";></script>
</head>
<body>

bla bla bla....
<s:layout-render name="/WEB-INF/jsp/layout/Menu.jsp" menu="${menu}" />

<%-- Private message popup --%>
<s:layout-render name="/WEB-INF/jsp/layout/PrivateMessagesPopup.jsp"/>
</s:layout-definition>


-----------------------------------------------------
Basefoot.jsp:

<%...@page contentType="text/html;charset=utf-8" language="java" %>
<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-definition>

some html tags to close the page

</body>
</html>
</s:layout-definition>


-----------------------------------------------------
Menu.jsp (url to menu controller)

<%...@include file="/WEB-INF/jsp/common/Taglibs.jsp" %>
<s:layout-definition>
   <s:url var="url" beanclass="${menu}" prependContext="false">
   </s:url>
   <jsp:include page="${url}" />
</s:layout-definition>





------------------------------------------------------------------------------

_______________________________________________
Stripes-users mailing list
Stripes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stripes-users


--
Richard Hauswald
Blog: http://tnfstacc.blogspot.com/
LinkedIn: http://www.linkedin.com/in/richardhauswald
Xing: http://www.xing.com/profile/Richard_Hauswald


------------------------------------------------------------------------------

_______________________________________________
Stripes-users mailing list
Stripes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stripes-users

--
 Morten Matras
 Consultant
 Blob Communication ApS
 Svendsagervej 42
 DK-5240 Odense NĂ˜
 P: (+45) 76 6-5-4-3-2-1
 W: www.blobcom.com
 E: morten.mat...@gmail.com

------------------------------------------------------------------------------


_______________________________________________
Stripes-users mailing list
Stripes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stripes-users

------------------------------------------------------------------------------

_______________________________________________
Stripes-users mailing list
Stripes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to