java - 开始看到对象堆异常 Java 6

标签 java ant jvm out-of-memory heap-memory

我开始在使用 32 位(以及 64 位)Java 6(在 Windows 8 x64 上。在安装了一些 Windows 更新之前这不是问题......)来调用时看到以下错误 Ant 脚本

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

有人见过吗?我已经在 SO 和其他地方进行了一些挖掘,但没有发现任何可以解决此问题的内容

编辑8/24

到目前为止,我尝试了以下方法来解决该问题,但都没有奏效:

  1. 在系统环境变量中设置_JAVA_OPTIONS,最大堆大小为3GB

  2. 在调用 ant 之前在 cmd 中设置 JVM_OPTS,再次将最大堆大小设置为 3GB

  3. 在进行实际的 java 调用时传入 -Xms-Xmx 参数,如下所示 %JAVA_HOME%\bin\java -Xms512m - Xmx2048m org.apache.tools.ant.Main

  4. 在调用 ant 之前设置 ANT_OPTS 变量

  5. 卸载出现这些问题之前的 Windows 更新。

    有人有与以下不同的解决方案吗?由于其他尝试均无效..

最佳答案

当您在 32 位 Windows(或 32 位 Windows 模拟器)上运行时,您只有大约 1.2 GB - 1.5 GB 的可用虚拟内存。此大小取决于您在该空间中可能运行的其他内容,因为它并不总是在内存空间方面将程序彼此隔离(即内存空间是有限的和共享的)

因此,在更新 Windows 后,它可能会安装一个在 Java 之前运行的新程序,或者更新一个使用更多内存的现有程序。

最简单的解决方案是使用不存在此问题的 64 位 JVM。或者您必须减小最大堆大小。

关于java - 开始看到对象堆异常 Java 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881091/

相关文章:

java - 如何在同一个 CMD 窗口中显示 ANT exec 任务输出?

java - FindBugs 找不到 org.apache.bcel.classfile.ClassFormatException

java - 运行 Ant 脚本时出现代理问题

.net - 压缩对象指针的目的是什么?

java - 当 java jvm 编译字节码时,该代码在进程空间中的什么位置?

java - 在 Java/Groovy 中读取多部分/混合响应

java - 在 getTables() 方法中的何处指定数据库名称。

java - 单击按钮时获取空值

java - 检查 map 是否包含键

java - 使用 JVM 内存默认值运行 Java Web 应用程序