simplivity / bullshtml

Bullseye HTML Coverage Report Generator
3 stars 4 forks source link

java.lang.OutOfMemoryError: Java heap space, if cov file is larger 30mb, even with heap up to 4gb #14

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Create coverage file of a big project, which will be circa 30mb
2. Run bullshtml like this: java -Xms3g -Xmx4g -jar bullshtml.jar -f 
"D:\378.cov" coverage_report

What is the expected output? What do you see instead?
Expected: coverage report. Got stack trace:
D:\Coverage>java -Xms3g -Xmx4g -jar bullshtml.jar -f "D:\377.cov" 
coverage_report 
Can't get property content using method get/isContent from com.junoyoon.SrcFile 
instance
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:564)
    at org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:515)
    at org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:417)
    at org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
    at org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
    at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
    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 com.junoyoon.SrcFile.getHtml(SrcFile.java:134)
    at com.junoyoon.Src.generateHtml(Src.java:101)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:366)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateHtml(BullsHtml.java:271)
    at com.junoyoon.BullsHtml.main(BullsHtml.java:436)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.simontuffs.onejar.Boot.run(Boot.java:306)
    at com.simontuffs.onejar.Boot.main(Boot.java:159)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOfRange(Unknown Source)
    at java.lang.String.<init>(Unknown Source)
    at java.lang.StringBuffer.toString(Unknown Source)
    at com.junoyoon.SourcePainter.paint(SourcePainter.java:188)
    at com.junoyoon.SrcFile.getContent(SrcFile.java:124)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:564)
    at org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:515)
    at org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:417)
    at org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
    at org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
    at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
    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 com.junoyoon.SrcFile.getHtml(SrcFile.java:134)
    at com.junoyoon.Src.generateHtml(Src.java:101)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:366)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateHtml(BullsHtml.java:271)
    at com.junoyoon.BullsHtml.main(BullsHtml.java:436)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
Can't get property content using method get/isContent from com.junoyoon.SrcFile 
instance
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:564)
    at org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:515)
    at org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:417)
    at org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
    at org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
    at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
    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 com.junoyoon.SrcFile.getHtml(SrcFile.java:134)
    at com.junoyoon.Src.generateHtml(Src.java:101)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:366)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateHtml(BullsHtml.java:271)
    at com.junoyoon.BullsHtml.main(BullsHtml.java:436)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.simontuffs.onejar.Boot.run(Boot.java:306)
    at com.simontuffs.onejar.Boot.main(Boot.java:159)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuffer.append(Unknown Source)
    at com.junoyoon.SourcePainter$CustomCppXhtmlRenderer.renderALine(SourcePainter.java:164)
    at com.junoyoon.SourcePainter$CustomCppXhtmlRenderer.highlight(SourcePainter.java:135)
    at com.junoyoon.SourcePainter.paint(SourcePainter.java:186)
    at com.junoyoon.SrcFile.getContent(SrcFile.java:124)
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:564)
    at org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:515)
    at org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:417)
    at org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
    at org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
    at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
    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 com.junoyoon.SrcFile.getHtml(SrcFile.java:134)
    at com.junoyoon.Src.generateHtml(Src.java:101)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:366)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateChildHtml(BullsHtml.java:368)
    at com.junoyoon.BullsHtml.generateHtml(BullsHtml.java:271)

What version of the product are you using? On what operating system?
Reproduced on Windows7 x64. Bullshtml 1.05, Bullseye 8.7.9.0

Please provide any additional information below.
I downloaded code and changed debuglevel to lines,vars,source, so we can see 
line numbers.
Before we had smaller reports, and everything worked fine with heap 3-4gb. Now 
our reports become bigger and we get this problem.
Unfortunately, we have no more free RAM for heap. 
I understand, that it is not a bug, rather a performance improvement and tried 
to find solve by myself. Can help with debug

Original issue reported on code.google.com by anton.fe...@gmail.com on 9 Aug 2012 at 1:28

GoogleCodeExporter commented 9 years ago
Same thing on my side.
However, I made it work on Windows 7, 64bits, 8Gb of RAM with the exact same 
command:
java -Xms3g -Xmx4g -jar bullshtml.jar -f "my_cov_file.cov" coverage_report

The memory usage went up to 6.5Gb during the process, with about 4.5Gb being a 
direct consequence of bullshtml.

Original comment by oliviert...@gmail.com on 9 Aug 2012 at 10:17

GoogleCodeExporter commented 9 years ago
I highly recommend you to filter out bullseye coverage measurement from cov 
file.
This project started from our internal needs, so I didn't care about memory 
size much.
If it require too much memory, which means you instrumented too much.
However I'll repackage it with more XMX setting.. like 2G..

Original comment by junoy...@gmail.com on 18 Feb 2013 at 3:12