You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Becky Norum <bn...@coe.neu.edu> on 2003/03/05 15:28:14 UTC

[OT] Java method size limitations

This is FYI - it was an issue that came up when someone (not me!) had an
8500 line Java source file.  He got a "code too large for try statement"
exception during compilation, which puzzled even some long term Java
programmers.

Apparently, there is an upper limit of 64K (compiled) on java methods.
(see
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#154)

The Java method bytecode code length is defined as an int (32-bit), but
exception start/end blocks are defined by shorts (16-bit).  This limits
the method length to 2^16=64K.

Hopefully, noone on this list will ever write a class that large, but in
case you ever run across this.. 

-- 
Becky Norum
Database Administrator
Center for Subsurface Sensing and Imaging Systems (CenSSIS)
Northeastern University
http://www.censsis.neu.edu



---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by Davor Cengija <da...@mail.inet.hr>.
Craig R. McClanahan wrote:

> 
> 
> On Thu, 6 Mar 2003, Davor Cengija wrote:
> 
>>
>> I had that problem in a compiled JSP page (therefore, in the created
>> servlet): a table with 150 rows and 8 <bean:write /> columns (some
>> financial data).
>>
>> The solution was to split the table into 3 files and in the first one
>> just included the second and the third using <jsp:include />. Now it
>> works just fine.
> 
> You might also be assisted by updated JSP page compilers that do not put
> the entire page into a single method.  For example, the Jasper2 compiler
> in Tomcat 4.1.18 takes care of this -- it splits your page into multiple
> methods as long as you are not using scriptlets.  (As an extra added
> benefit, the compiled pages run *much* faster than older Tomcat versions
> also :-).
> 

Thanks for the tip!

However, I didn't mention that I used WebSphere 4.0.3 and WebSphere 
Application Developer 4.0.3 (with WAS test environment 4.0.2 in it) for 
development. I don't know how to replace the JSP engine in WAS, and I don't 
think it would by very clever idea, anyway.

Has anyone tried it? Any tips?

Cheers,
Davor
-- 
davor.cengija@mail.inet.hr


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by "Craig R. McClanahan" <cr...@apache.org>.

On Thu, 6 Mar 2003, Davor Cengija wrote:

> Date: Thu, 06 Mar 2003 08:09:53 +0100
> From: Davor Cengija <da...@mail.inet.hr>
> Reply-To: Struts Users Mailing List <st...@jakarta.apache.org>
> To: struts-user@jakarta.apache.org
> Subject: Re: [OT] Java method size limitations
>
> Becky Norum wrote:
>
> > This is FYI - it was an issue that came up when someone (not me!) had an
> > 8500 line Java source file.  He got a "code too large for try statement"
> > exception during compilation, which puzzled even some long term Java
> > programmers.
> >
> > Apparently, there is an upper limit of 64K (compiled) on java methods.
> > (see
> >
> http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#154)
> >
> > The Java method bytecode code length is defined as an int (32-bit), but
> > exception start/end blocks are defined by shorts (16-bit).  This limits
> > the method length to 2^16=64K.
> >
> > Hopefully, noone on this list will ever write a class that large, but in
> > case you ever run across this..
> >
>
> I had that problem in a compiled JSP page (therefore, in the created
> servlet): a table with 150 rows and 8 <bean:write /> columns (some
> financial data).
>
> The solution was to split the table into 3 files and in the first one just
> included the second and the third using <jsp:include />. Now it works just
> fine.

You might also be assisted by updated JSP page compilers that do not put
the entire page into a single method.  For example, the Jasper2 compiler
in Tomcat 4.1.18 takes care of this -- it splits your page into multiple
methods as long as you are not using scriptlets.  (As an extra added
benefit, the compiled pages run *much* faster than older Tomcat versions
also :-).

> --
> davor.cengija@mail.inet.hr
>

Craig

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by Kwok Peng Tuck <pe...@makmal.net>.
I hit those limitations once, although it wasn't really my fault. Some 
eons ago when tomcat 3.X was in use in my company, some guy decided he 
would like us all to be able access the db through tomcat easily. 
Problem was it required plugging your select statement into his code 
until  well you get the picture. So I spent about 2-3 working hours 
trying to track down the problem only to find out it is a limitation in 
the jvm :( .


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by Davor Cengija <da...@mail.inet.hr>.
Kwok Peng Tuck wrote:


> 
>>I had that problem in a compiled JSP page (therefore, in the created
>>servlet): a table with 150 rows and 8 <bean:write /> columns (some
>>financial data).
>>
>>The solution was to split the table into 3 files and in the first one just
>>included the second and the third using <jsp:include />. Now it works just
>>fine.
>>  
>>
> Were you iterating over  a collection ?  If so you could have used the
> logic:iterate tag to give you a hand ..... :)

No. Those were some financial data (numbers with different formatting, 
texts, calculations) in a bean with method names such as getFP001() to 
getFP155() with some exceptions. Each method had to be called directly. 
Therefore the problems.

Regards,
Davor

P.S.
A: When the answer is above the question.
Q: What's the most annoying thing in an email?

-- 
davor.cengija@mail.inet.hr


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by Kwok Peng Tuck <pe...@makmal.net>.
Were you iterating over  a collection ?  If so you could have used the 
logic:iterate tag to give you a hand ..... :)

>I had that problem in a compiled JSP page (therefore, in the created 
>servlet): a table with 150 rows and 8 <bean:write /> columns (some 
>financial data). 
>
>The solution was to split the table into 3 files and in the first one just 
>included the second and the third using <jsp:include />. Now it works just 
>fine.
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by Davor Cengija <da...@mail.inet.hr>.
Becky Norum wrote:

> This is FYI - it was an issue that came up when someone (not me!) had an
> 8500 line Java source file.  He got a "code too large for try statement"
> exception during compilation, which puzzled even some long term Java
> programmers.
> 
> Apparently, there is an upper limit of 64K (compiled) on java methods.
> (see
> 
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#154)
> 
> The Java method bytecode code length is defined as an int (32-bit), but
> exception start/end blocks are defined by shorts (16-bit).  This limits
> the method length to 2^16=64K.
> 
> Hopefully, noone on this list will ever write a class that large, but in
> case you ever run across this..
> 

I had that problem in a compiled JSP page (therefore, in the created 
servlet): a table with 150 rows and 8 <bean:write /> columns (some 
financial data). 

The solution was to split the table into 3 files and in the first one just 
included the second and the third using <jsp:include />. Now it works just 
fine.
-- 
davor.cengija@mail.inet.hr


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: [OT] Java method size limitations

Posted by alexj <al...@freesurf.ch>.
loooooooooool

--
Alexandre Jaquet
----- Original Message -----
From: "Becky Norum" <bn...@coe.neu.edu>
To: <st...@jakarta.apache.org>
Sent: Wednesday, March 05, 2003 3:28 PM
Subject: [OT] Java method size limitations


> This is FYI - it was an issue that came up when someone (not me!) had an
> 8500 line Java source file.  He got a "code too large for try statement"
> exception during compilation, which puzzled even some long term Java
> programmers.
>
> Apparently, there is an upper limit of 64K (compiled) on java methods.
> (see
>
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#15
4)
>
> The Java method bytecode code length is defined as an int (32-bit), but
> exception start/end blocks are defined by shorts (16-bit).  This limits
> the method length to 2^16=64K.
>
> Hopefully, noone on this list will ever write a class that large, but in
> case you ever run across this..
>
> --
> Becky Norum
> Database Administrator
> Center for Subsurface Sensing and Imaging Systems (CenSSIS)
> Northeastern University
> http://www.censsis.neu.edu
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org