You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2003/05/01 16:48:38 UTC
DO NOT REPLY [Bug 19516] New: -
uncompressed zipping takes too much memory
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19516>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19516
uncompressed zipping takes too much memory
Summary: uncompressed zipping takes too much memory
Product: Ant
Version: 1.5.3
Platform: All
OS/Version: All
Status: NEW
Severity: Enhancement
Priority: Other
Component: Core tasks
AssignedTo: dev@ant.apache.org
ReportedBy: glen_lewis@hotmail.com
I use the <ear> task with compress='false' to create a 33MB .ear file,
including a 17MB .war file and some smaller .jars.
Zip.addResources() calls Zip.zipFile() here:
zipFile(zf.getInputStream(ze), ... );
The zipFile() method in turn checks whether the InputStream param has
markSupported: if so, it marks, reads, and resets. Else, it buffers the entire
InputStream into a ByteArrayOutputStream/byte[]. That byte[] (for my build
script) is huge!
Solution: change the line of code above to an InputStream that supports marking.
zipFile( new BufferedInputStream(zf.getInputStream(ze)), ... );
AND, probably, close that InputStream!
regards,
Glen Lewis
HPROF output:
SITES BEGIN (ordered by live bytes) Thu May 01 09:42:37 2003
percent live alloc'ed stack class
rank self accum bytes objs bytes objs trace name
1 58.28% 58.28% 33554448 1 110366624 250 13654 [B
2 30.62% 88.89% 17629416 1 33432128 44 13656 [B
3 4.10% 92.99% 2359296 2 2359296 2 0 [I
... remaining sites each consume <100kb of memory, not important
TRACE 13654:
java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:104)
org.apache.tools.ant.taskdefs.Zip.zipFile(Zip.java:609)
org.apache.tools.ant.taskdefs.Jar.zipFile(Jar.java:238)
org.apache.tools.ant.taskdefs.Zip.zipFile(Zip.java:651)
org.apache.tools.ant.taskdefs.Jar.zipFile(Jar.java:220)
org.apache.tools.ant.taskdefs.Ear.zipFile(Ear.java:134)
org.apache.tools.ant.taskdefs.Zip.addFiles(Zip.java:394)
org.apache.tools.ant.taskdefs.Zip.execute(Zip.java:271)
org.apache.tools.ant.Task.perform(Task.java:217)
org.apache.tools.ant.Target.execute(Target.java:184)
org.apache.tools.ant.Target.performTasks(Target.java:202)
org.apache.tools.ant.Project.executeTarget(Project.java:601)
org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:266)
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:120)
org.apache.tools.ant.Task.perform(Task.java:217)
org.apache.tools.ant.Target.execute(Target.java:184)
org.apache.tools.ant.Target.performTasks(Target.java:202)
org.apache.tools.ant.Project.executeTarget(Project.java:601)
org.apache.tools.ant.Project.executeTargets(Project.java:560)
org.apache.tools.ant.Main.runBuild(Main.java:454)
org.apache.tools.ant.Main.start(Main.java:153)
org.apache.tools.ant.Main.main(Main.java:176)
TRACE 13656:
java.io.ByteArrayOutputStream.toByteArray
(ByteArrayOutputStream.java:146)
org.apache.tools.ant.taskdefs.Zip.zipFile(Zip.java:612)
org.apache.tools.ant.taskdefs.Jar.zipFile(Jar.java:238)
org.apache.tools.ant.taskdefs.Zip.zipFile(Zip.java:651)
org.apache.tools.ant.taskdefs.Jar.zipFile(Jar.java:220)
org.apache.tools.ant.taskdefs.Ear.zipFile(Ear.java:134)
org.apache.tools.ant.taskdefs.Zip.addFiles(Zip.java:394)
org.apache.tools.ant.taskdefs.Zip.execute(Zip.java:271)
org.apache.tools.ant.Task.perform(Task.java:217)
org.apache.tools.ant.Target.execute(Target.java:184)
org.apache.tools.ant.Target.performTasks(Target.java:202)
org.apache.tools.ant.Project.executeTarget(Project.java:601)
org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:266)
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:120)
org.apache.tools.ant.Task.perform(Task.java:217)
org.apache.tools.ant.Target.execute(Target.java:184)
org.apache.tools.ant.Target.performTasks(Target.java:202)
org.apache.tools.ant.Project.executeTarget(Project.java:601)
org.apache.tools.ant.Project.executeTargets(Project.java:560)
org.apache.tools.ant.Main.runBuild(Main.java:454)
org.apache.tools.ant.Main.start(Main.java:153)
org.apache.tools.ant.Main.main(Main.java:176)