【发布时间】:2013-05-20 06:01:17
【问题描述】:
我正在尝试为 iOS 构建 AwayPhysics。 但是当我在 FD 下编译 release/ad-hoc 甚至(慢速调试)时:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Integer.valueOf(Unknown Source)
at adobe.abc.GlobalOptimizer.merge(GlobalOptimizer.java:9985)
at adobe.abc.GlobalOptimizer$InputAbc.readCode(GlobalOptimizer.java:1265
)
at adobe.abc.GlobalOptimizer$InputAbc.readBody(GlobalOptimizer.java:685)
at adobe.abc.GlobalOptimizer$InputAbc.readBodies(GlobalOptimizer.java:40
4)
at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:331)
at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler
.java:611)
at com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:104)
Compilation failed while executing : ADT
我已经测试过: Adobe Air 3.4 (Flex SDK) Adobe Air 3.5 (Flex SDK) Adobe Air 3.6 (Flex SDK) Adobe Air 3.7 (Flex SDK) Adobe Air 3.8 测试版(Flex SDK)
Adobe Air 3.7 (ASCSDK) Adobe Air 3.8 (ASCSDK)
我也尝试过“-optimize=false”,但没有任何帮助。
只有快速解释器模式才能工作,这真的很慢!
重现步骤:
- 下载 AwayPhysics(flascc 之上的子弹物理) https://github.com/away3d/awayphysics-core-fp11/tree/dev 或Oimophysics
- 构建任何示例或仅包含 AWPDynamicWorld
更新:
将堆内存大小增加到 -Xms1024m -Xmx1524m 后:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashSet.<init>(Unknown Source)
at adobe.abc.Algorithms$SetMap.get(Algorithms.java:226)
at adobe.abc.Algorithms.addUses(Algorithms.java:165)
at adobe.abc.Algorithms.findUses(Algorithms.java:187)
at adobe.abc.GlobalOptimizer.sccp(GlobalOptimizer.java:4731)
at adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:3615)
at adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:2309)
at adobe.abc.LLVMEmitter.optimizeABCs(LLVMEmitter.java:532)
at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:341)
at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler
.java:611)
at com.adobe.air.ipa.BitcodeGenerator.main(Bitcod
eGenerator.java:104)
Compilation failed while executing : ADT
【问题讨论】:
-
我怀疑您在这个项目中有许多 SWF 文件作为资产。他们在时间线上是否有 ActionScript(即 stop()、gotoAndPlay 等)?如果没有,也许您可以以一种可以避免 iOS 交叉编译步骤的方式打包它们(这是占用所有时间/内存的原因)。此外,ADT 启动了许多 Java 子进程。用
ps -aef | grep -i java观察这些进程,看看Java 堆大小参数在子进程上是否正确。如果没有,请尝试设置全局环境变量JAVA_OPTS='-Xms1024m -Xmx2048m',而不是使用 jvm.config 文件。 -
您还可以在 Eclipse 中为给定的 SDK 设置 java 内存参数 (
-Xms512m -Xmx1024m -XX:MaxPermSize=512m):Window->Preference->Java->Installed JREs->Your JRE->Default VM Arguments -
什么都试过了。还是不行。
-
正如我所说,它很容易重现错误。没有额外的库 swc 或 swf。
标签: ios actionscript-3 air