I ran into this problem a couple weeks ago, and I just thought
I would relay it to the group.  We were in the process of
putting a dynamically generated report together (quick and dirty)
using struts.  Here's a little bit of information about the platform
we were running on:

  Platform:     Windows/2000, 2GB RAM, 900Mhz
  JVM:      Sun 1.3.1_01
  Servlets:     Tomcat 3.2.3 (similar results for 3.3 & 4.01)

The page we created had about 150 custom-tags on it, which took
a 14K JSP file and blew it up to a 410K java file.  javac compiled
it fine.  But when the class was loaded and used, the JVM would
crash (see message below).  Below are the results from a 'test.jsp'
which used only '<bean:define>' tags:

  JVM                   FILE SIZE(K)    NUMBER OF TAGS
  COMPILER              CLASS     JAVA  TO CRASH JVM
  HotSpot Client        35        251           131
  HotSpot Server  55      386           200 No Crash *  
  Classic               56        386           200 No Crash *

Note (*): You'll notice in this test that there was no crash
for Hotspot Server and classic, however, I did get a
"java.lang.VerifyError: ... Illegal target of jump or branch",
meaning (I guess) that the class files are too big to be
handled by the verifier.

My original demo used about 150 tags, a mixture of Tags and
BodyTags, and caused Hotspot Server to crash at around 113 tags
and Hotspot Client crashed around 85, while Classic could not
load-up my webapp.

Obviously the design requires some rethinking, if we're reaching
these types of limits.  What I've learned is that custom-tags
are *bulky* (as implemented in tomcat/catalina).  As a corollary,
I know try to use '<%=var1%>' instead of
'<bean:write name="var1"/>' when feasible, etc.

- Gidado

Here's the message when the JVM crashed:
#
# HotSpot Virtual Machine Error, Internal Error
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Error ID: 47454E45524154452F4F502D41500E435050084B
#
# Problematic Thread: prio=5 tid=0x8ac06a8 nid=0x7cc runnable
#

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

Reply via email to