aspose file tools*
The moose likes I/O and Streams and the fly likes StringBuilder out of memory error Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » I/O and Streams
Bookmark "StringBuilder out of memory error " Watch "StringBuilder out of memory error " New topic
Author

StringBuilder out of memory error

Joshua Elkino
Ranch Hand

Joined: Jul 24, 2007
Posts: 91
I'm going crazy because i'm getting the following error and i can't figure out why.

java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at com.autonomy.ps.gs.IDOLListener.doPost(IDOLListener.java:37)

my code is



Line 37 is the append line. What am i doing wrong? I tried to put a sysout before the append to see what characters are being sent to my servlet post, but there is nothing in the logs. This happens even after i restart tomcat and there is nothing hitting the servlet.

Thanks
Poobhathy Kannan
Ranch Hand

Joined: May 26, 2004
Posts: 94
Because, you can see from the error message, the JVM does a arrayCopy when it expands the StringBuilder. If the StirngBuilder needs to be expanded whenever you append a char, then JVM will do this array copy again and again which consumes a lot of memory. I think you need to change your way of reading with buffering. try using readLine(byte[] b,int off,int len) method of ServletInputStream.


http://learnertobeginner.blogspot.com/
Joe Ess
Bartender

Joined: Oct 29, 2001
Posts: 8900
    
    8

JavaRanch FAQ: Investigate OutOfMemoryError


"blabbing like a narcissistic fool with a superiority complex" ~ N.A.
[How To Ask Questions On JavaRanch]
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: StringBuilder out of memory error