[antlr-interest] [Antlr + ST] Huge output string - OutOfMemoryError

Hieu Phung phungngochieu at gmail.com
Mon Oct 19 22:40:22 PDT 2009


Hi Jim,

Thank you for your suggestion. Actually the result I got was with JVM
setting -Xms1024m -Xmx1024m. And it's the maximum memory size I can set for
my application server. The gc setting was also configured...

Regards,
Helen

On Sun, Oct 18, 2009 at 12:05 PM, Jim Idle <jimi at temporal-wave.com> wrote:

>  Run Java with   - Xmx1500M
>
>
>
> Or some other option that increases available memory size. However this
> could point to something that can be better organized in terms of recursion
> or whatever.
>
>
>
> You may also consider running Java with a better garbage collector such as:
>
>
>
> -Xincgc
>
>
>
> JIm
>
>
>
>
>
> *From:* antlr-interest-bounces at antlr.org [mailto:
> antlr-interest-bounces at antlr.org] *On Behalf Of *Hieu Phung
> *Sent:* Friday, October 16, 2009 4:03 PM
> *To:* antlr-interest at antlr.org
> *Subject:* [antlr-interest] [Antlr + ST] Huge output string -
> OutOfMemoryError
>
>
>
> Hi all,
>
> I am writing a program using Antlr and StringTemplate to translate an input
> file to an XML file. Input is small but output is huge: 720KB input file
> will generate about 100MB output file. When my input reached 7608KB, I got
> OOM error
>
> time taken in second: 18 - file size in KB: 4804
> time taken in second: 20 - file size in KB: 5205
> time taken in second: 20 - file size in KB: 5605
> time taken in second: 21 - file size in KB: 6006
> time taken in second: 23 - file size in KB: 6406
> time taken in second: 25 - file size in KB: 6806
> time taken in second: 31 - file size in KB: 7207
>
> at size 7608KB:
> Exception in thread "main" 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.StringBuffer.append(StringBuffer.java:320)
>         at java.io.StringWriter.write(StringWriter.java:60)
>         at
> org.antlr.stringtemplate.AutoIndentWriter.write(AutoIndentWriter.java:172)
>         at
> org.antlr.stringtemplate.language.ASTExpr.writePOJO(ASTExpr.java:702)
>         at
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:683)
>         at
> org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:660)
>         at
> org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
>         at
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
>         at
> org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
>         at
> org.antlr.stringtemplate.language.ASTExpr.writeTemplate(ASTExpr.java:750)
>         at
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:680)
>         at
> org.antlr.stringtemplate.language.ASTExpr.writeIterableValue(ASTExpr.java:792)
>         at
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:682)
>         at
> org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:660)
>         at
> org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
>         at
> org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
>         at
> org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
>         at
> org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1670)
>         at
> org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1661)
>         at FFMParser.file(FFMParser.java:127)
>         at CSVTest.main(CSVTest.java:33)
>
> Is there any suggestion so that program can generate 1GB file?
>
> 1)       Having multiple templates, each template generates small string,
> then write the small strings to file.
> My input has format: ((Part1) (Part2)+ (Part3)). For each part2, there is
> an xml element in the output. I can have 3 templates here. In Antlr
> action, I will write each part to file when parsing is done for the part.
>
> 2)       Any template engine that could write to file directly, instead of
> returning a string...? (This might not be proper to discussed here :D)
>
> I hope problem is stated clearly. Please let me know if you need more
> information. Any suggestion is much appreciated. Thank you.
>
> Regards,
>
> Helen
>
>
>
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20091020/1ff32a3f/attachment.html 


More information about the antlr-interest mailing list