【问题标题】:How to resolve 'Error occurred during initialization of VM' java?java - 如何解决“VM初始化期间发生错误”java?
【发布时间】:2012-10-15 05:19:04
【问题描述】:

我已经使用 ssh 连接到基于 linux 的服务器。最近,我使用以下命令安装了 JDK:

sudo yum install java-1.6.0-openjdk-devel

并且 jdk 安装成功,但是每当我运行命令 javajavac 时,都会出现以下错误:

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

即使是运行命令java -version,也会带来这个错误。当我尝试使用 java -Xmx512m -Xms256m -version 为 java 提供更多空间时,我会收到以下错误:

*** glibc detected *** java: double free or corruption (!prev): 0x00007fc84400e270 ***
*** glibc detected *** java: double free or corruption (fasttop): 0x00007fc8440089f0 ***
#
Aborted (core dumped)

我该如何解决这个问题?

提前致谢

【问题讨论】:

  • 试试 'which java' 看看哪个 java 正在运行?可能它没有跑到正确的地方?还是直接从它的bin目录执行java?
  • 您是否设置了内存限制?什么样的Linux? RHEL,Fedora?运行$uname -a 并将输出添加到问题中。和$ulimit -a 也会有所帮助
  • 我很担心那个 glibc 消息...
  • 尝试以root身份运行它,如果你可以检查你的ulimit,你可能需要增加它。

标签: java jvm


【解决方案1】:

我从未见过这种异常,所以这是我最好的猜测:您是否尝试限制stack size by using -Xss JVM parameter(即-Xms8m -Xmx16m -Xss4m)?快速谷歌搜索表明export MALLOC_CHECK_=0 可能会让你克服,但我不确定 JVM 是否能正常运行。

【讨论】:

    【解决方案2】:

    虚拟 Linux 服务器? 运行时得到什么:

    java -Xmx1m -version

    ulimit -a

    看起来像是内存分配问题。如果可能,您可以尝试增加交换空间。

    【讨论】:

      【解决方案3】:

      在我看来,似乎没有足够的内存来运行虚拟机(可能是物理内存、虚拟内存或 ulimit) - 您应该尝试减少分配给 VM 的内存(我认为默认为 64Mb)而不是增加它。

      【讨论】:

      • java -Xmx3000m -Xms3000m 初始化 VM 时出错 无法为对象堆保留足够的空间 错误:无法创建 Java 虚拟机。更大的值会使 VM 崩溃
      【解决方案4】:

      降低您的 -Xms(不是 xmlx)。例如使用 -Xms40m。如果它按照其他答案中的说明启动,则您的内存可能太低而无法在启动时为 vm 回收 256m。

      【讨论】:

        【解决方案5】:

        看起来您使用的是 JDK 32 位版本。如果是这样,您分配的堆大小不能超过1.2GB 或其他东西。

        要么使用 64 位 JDK,要么尝试使用 1.2G 作为最大堆大小。

        【讨论】:

        • 但是我没有使用超过 1.2GB 的堆,我使用了 -Xmx512m,这意味着最大使用 512MB 的堆。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-16
        • 2017-03-31
        • 2018-11-12
        • 1970-01-01
        • 2012-05-18
        • 2011-09-24
        • 2015-11-15
        相关资源
        最近更新 更多