在 Mac OS X 10.6.8 上构建 android 2.1 期间出现 java.lang.OutOfMemoryError

标签 java android macos build out-of-memory

这是我正在努力解决的构建问题。我正在尝试使用 jdk 1.5 在 Mac OS X 10.6.8 上构建 Android 2.1。 “make”命令运行了一段时间,最后,它说:

The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: Java heap space
    at com.sun.tools.javac.code.Scope.dble(Scope.java:150)
    at com.sun.tools.javac.code.Scope.enter(Scope.java:185)
    at com.sun.tools.javac.comp.MemberEnter.importAll(MemberEnter.java:129)
    at com.sun.tools.javac.comp.MemberEnter.visitTopLevel(MemberEnter.java:504)
    at com.sun.tools.javac.tree.Tree$TopLevel.accept(Tree.java:382)
    at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:383)
    at com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:778)
    at com.sun.tools.javac.code.Symbol.complete(Symbol.java:355)
    at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:612)
    at com.sun.tools.javac.comp.Enter.complete(Enter.java:463)
    at com.sun.tools.javac.comp.Enter.main(Enter.java:441)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:404)
    at com.sun.tools.javac.main.Main.compile(Main.java:592)
    at com.sun.tools.javac.main.Main.compile(Main.java:544)
    at com.sun.tools.javac.Main.compile(Main.java:92)
    at util.build.JavacBuildStep.build(JavacBuildStep.java:69)
    at util.build.BuildDalvikSuite.handleTests(BuildDalvikSuite.java:504)
    at util.build.BuildDalvikSuite.compose(BuildDalvikSuite.java:170)
    at util.build.BuildDalvikSuite.main(BuildDalvikSuite.java:136)
main javac dalvik-cts-buildutil build step failed
make: *** [out/host/darwin-x86/obj/EXECUTABLES/vm-tests_intermediates/tests] Error 1

看来是java heap size不够了。我在 Google 上搜索了这个问题,它给了我几个链接,例如:

这些页面主要是建议在JVM Options中添加“-Xmx”选项。我尝试了以下内容: 在/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard/Resources/Info.plist 中添加了此列”

VMOptions -Xms1024M -Xmx2048M

(我还尝试设置 VMOptions.x86_64 而不是 VMOptions)。

在另一个链接 (osdir.com/ml/android-platform/2010-06/msg00097.html) 之后,我还在 android 构建目录中的 build/core/definitions.mk 文件中更改了以下行。

$(hide) java -Xmx512M -jar $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar \

$(hide) java -Xmx2048M -jar $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar \

以上都没有帮助。我有几个问题:

  • 是否可以在整个系统范围内进行更改 Mac OS X 上的 java 堆大小,这是正确的方法吗?如果是这样,我在 Info.plist 文件中所做的更改是否可以实现?
  • 或者是我必须更改堆大小 专门针对android构建?如果可以,我应该怎么做?

编辑

只是一个更新:我尝试用 jdk 1.6 构建 android 3.1,并且构建很顺利。 (即使没有为 jdk 1.6 设置“-Xmx”选项)。我仍然不知道用 jdk 1.5 构建 2.1 时出现了什么问题。

最佳答案

有时 OutOfMemoryError 并非由于 Heap 不足。尝试增加 PermGen:

-XX:PermSize=40m
-XX:MaxPermSize=240m

有时也是由 YoungTernured 尺寸不佳引起的。还有一些人应该长时间执行 Full GC 并且收集的百分比很低。

问候。

关于在 Mac OS X 10.6.8 上构建 android 2.1 期间出现 java.lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487980/

相关文章:

java - 如何在JChart2D上进行个人积分?

java - App Engine 部署失败 - 最大文件大小?

swift - 如何在 Mac Catalyst 13.0+ swift 中打开 Finder

android - 自定义 AlertDialog 未显示

javascript - 使用 Jquery 访问 Android 的日期选择器

python - 在 Python 中预组合 Unicode 字符序列

objective-c - cocoa 脚本: Intercept any Object-first message calls

java - 在 main 方法的类中扩展 Frame 类

java - 在哪里最好定义java枚举?

android - 在触摸事件期间从后台线程更新 UI