我有一个Android Flex / AIR应用程序我正在Intellij 2017中开发。当我尝试在手机上调试它时,我不断收到内存不足的错误。
dx tool failed:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space
at java.util.BitSet.initWords(BitSet.java:166)
at java.util.BitSet.<init>(BitSet.java:161)
at com.android.dx.ssa.SsaBasicBlock.<init>(SsaBasicBlock.java:128)
at com.android.dx.ssa.SsaBasicBlock.newFromRop(SsaBasicBlock.java:147)
at com.android.dx.ssa.SsaMethod.convertRopToSsaBlocks(SsaMethod.java:173)
at com.android.dx.ssa.SsaMethod.newFromRopMethod(SsaMethod.java:103)
at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:44)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:98)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:297)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93)
at com.android.dx.command.dexer.Main.processClass(Main.java:734)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:678)
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:607)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:637)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:511)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:281)
at com.android.dx.command.dexer.Main.run(Main.java:247)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
它向我显示正在使用的命令:
DT command line: D:\Program Files\JetBrains\IntelliJ IDEA 2017.1.2\jre64\bin\java.exe .... ... -Xmx512m -jar ... ...
删除最多,但它表明它使用512米的内存。我已进入编译器设置并设置&#34;构建进程堆大小&#34; 2056年的选择,但这没有帮助。我还添加了JAVA_OPTS变量,其值为&#34; -Xms128 -Xmx2056m&#34;
我不确定Intellij在哪个地方设置更改它。
感谢任何帮助,谢谢
修改
以下是运行的原始命令,无论我尝试了什么,所以var总是说-Xmx512m
D:\<path_to_intellij>\java.exe -Dapplication.home=D:\<path_to_flex_sdk> -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en -Duser.region=en -Xmx512m -jar D:\<path_to_flex_sdk>\lib\adt.jar -package -target apk-debug -listen 7936 -storetype PKCS12 -keystore D:\<path_to_key_file> -storepass <password> D:\<output_path>\GROL.apk
编辑2
如果我从Intellij IDEA获取命令并在命令行上手动运行它并将512更改为更高的值,则可以正常工作。 IntelliJ中似乎没有针对此特定操作的设置。我必须在IntelliJ论坛上发帖,并在那里获得一些开发者帮助。如果他们回复,我会在这里回答
答案 0 :(得分:0)
您可以从IntelliJ菜单栏添加此设置,转到Help > Edit Custom VM Options...
,这将从安装文件夹中创建现有/bin/idea.exe.vmoptions
或/bin/idea64.exe.vmoptions
文件的副本,它将打开编辑。
您可以使用-Xms<initial heap size> -Xmx<maximum heap size>
,例如,最终文件应如下所示:
# custom IntelliJ IDEA VM options
-Xms750m
-Xmx2048m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops
要使更改生效,必须重新启动IntelliJ
另一种方法是在Run/Debug configurations
选项中设置尺寸,为此,请转到菜单栏Run > Edit Configurations...
,然后在-Xms750m -Xmx2048m
字段中添加VM Options
答案 1 :(得分:0)