从Eclipse运行ant时,javac:java.lang.OutOfMemoryError [英] javac: java.lang.OutOfMemoryError when running ant from Eclipse

查看:153
本文介绍了从Eclipse运行ant时,javac:java.lang.OutOfMemoryError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经给ini文件中的eclipse提供了大量的内存,但是它仍然没有使用任何超过300mb的内存,我可以在任务管理器中看到。

  [javac]系统资源不足。 
[javac]有关详细信息,请参阅以下堆栈跟踪。
[javac] java.lang.OutOfMemoryError:Java堆空间
[javac]在com.sun.tools.javac.comp.Attr.selectSym(Attr.java:1938)
[javac ] at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1835)
[javac]在com.sun.tools.javac.tree.JCTree $ JCFieldAccess.accept(JCTree.java: 1522)
[javac]在com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
[javac]在com.sun.tools.javac.comp.Attr。 attribExpr(Attr.java:377)
[javac]在com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:190)
[javac]在com.sun.tools。 javac.comp.Annotate.enterAnnotation(Annotate.java:167)
[javac]在com.sun.tools.javac.comp.MemberEnter.enterAnnotations(MemberEnter.java:743)
[javac] at com.sun.tools.javac.comp.MemberEnter.access $ 300(MemberEnter.java:42)
[javac]在com.sun.tools.javac.comp.MemberEnter $ 5.enterAnnotation(MemberEnter.java:711)
[javac]在com.sun.tools。 javac.comp.Annotate.flush(Annotate.java:95)
[javac] at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:87)
[javac] at com.sun.tools.javac.comp.Enter.complete(Enter.java:485)
[javac]在com.sun.tools.javac.comp.Enter.main(Enter.java:442)
[javac] at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:819)
[javac]在com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler。 java:727)
[javac]在com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac]在com.sun.tools.javac.main。 main.compile(Main.java:279)
[javac]在com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac]在com.sun。 tools.javac.Main.compile(Main.java:69)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl .java:39)
[javac] at sun.reflect.D elegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac]在java.lang.reflect.Method.invoke(Method.java:597)
[javac]在org.apache.tools.ant。 taskdefs.compilers.Javac13.execute(Javac13.java:56)
[javac]在org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
[javac]在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[javac] at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac] java.lang.reflect .Method.invoke(Method.java:597)
[javac]在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

这是我的ini文件。

   -  launcher.defaultAction 
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize1024m
--vm
C:\Program Files\Java\jdk1.6.0_24\ bin \javaw.exe -vmargs -Xms512m -Xmx1024m

我不知道为什么不使用记忆我在给它我需要做任何改变堆大小的事情吗?



谢谢

解决方案>

不是Eclipse的内存不足,而是蚂蚁。 Ant作为eclipse的外部工具运行,因此它不会继承您用于eclipse的VM设置。您可以在外部工具运行配置中为其设置选项。转到运行 - >外部工具 - >外部工具配置...然后在Ant构建下,您必须查找您的蚂蚁构建,您可以在JRE选项卡中设置vm参数。


I have given loads of memory to eclipse in the ini file but its still not using anything more than 300mb which i can see in the task manager.

  [javac] The system is out of resources.
    [javac] Consult the following stack trace for details.
    [javac] java.lang.OutOfMemoryError: Java heap space
    [javac]     at com.sun.tools.javac.comp.Attr.selectSym(Attr.java:1938)
    [javac]     at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1835)
    [javac]     at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522)
    [javac]     at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
    [javac]     at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:377)
    [javac]     at com.sun.tools.javac.comp.Annotate.enterAttributeValue(Annotate.java:190)
    [javac]     at com.sun.tools.javac.comp.Annotate.enterAnnotation(Annotate.java:167)
    [javac]     at com.sun.tools.javac.comp.MemberEnter.enterAnnotations(MemberEnter.java:743)
    [javac]     at com.sun.tools.javac.comp.MemberEnter.access$300(MemberEnter.java:42)
    [javac]     at com.sun.tools.javac.comp.MemberEnter$5.enterAnnotation(MemberEnter.java:711)
    [javac]     at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:95)
    [javac]     at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:87)
    [javac]     at com.sun.tools.javac.comp.Enter.complete(Enter.java:485)
    [javac]     at com.sun.tools.javac.comp.Enter.main(Enter.java:442)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:819)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:353)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:279)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:270)
    [javac]     at com.sun.tools.javac.Main.compile(Main.java:69)
    [javac]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [javac]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [javac]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [javac]     at java.lang.reflect.Method.invoke(Method.java:597)
    [javac]     at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
    [javac]     at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1065)
    [javac]     at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:882)
    [javac]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    [javac]     at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
    [javac]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [javac]     at java.lang.reflect.Method.invoke(Method.java:597)
    [javac]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

this is my ini file which i have.

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize1024m
--vm
C:\Program Files\Java\jdk1.6.0_24\bin\javaw.exe -vmargs -Xms512m -Xmx1024m

I have no idea why it wont use the memory I am giving it. Do i need to do anything else to change the heap size?

Thanks

解决方案

Not Eclipse is running out of memory, but ant. Ant is run as an external tool from eclipse, so it does not inherit the VM settings you are using for eclipse. You can set the options for it in the external tool run configuration. Go to Run -> External Tools -> External Tool Configurations... Then under "Ant Builds" you have to look up your ant build, and you can set the vm arguments in the JRE tab.

这篇关于从Eclipse运行ant时,javac:java.lang.OutOfMemoryError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆