【问题标题】:Could not create the Java virtual machine无法创建Java虚拟机
【发布时间】:2012-03-27 14:17:12
【问题描述】:

Java 虚拟机初始化面临一些问题。当我使用 root 帐户时,我可以正常使用 java。但是当我是用户帐户时,它会返回以下错误

user@host# $JAVA_HOME/bin/java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

这似乎不是内存问题,因为相同的命令适用于 root 帐户。可用内存(free -m)大于1200MB 我也尝试增加 JVM 内存限制

【问题讨论】:

  • 您确定两者都使用相同的 java 可执行文件吗?另外,我认为您可以限制特定用户的可用内存,如果您以用户身份执行 ulimit -a ,是否说明最大内存大小的限制?
  • 与内存相关的两行类似于max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) 200000
  • virtual memory (kbytes, -v) 200000
  • ,您需要为您的 Java 应用程序提供适当的安全权限才能在用户模式下更改内存。

标签: java linux jvm


【解决方案1】:

小心点。如果您尝试输入不存在的命令,您将收到此消息,例如:

/usr/bin/java -v

【讨论】:

  • 你的评论让我很开心。现在,如果我足够聪明,可以将漂亮的 cmets 通知设置到来自 Stackoverflow 的电子邮件中。哈哈哈
  • 这也解决了我的问题。该命令在 openjdk-8 中是 -version,但在 openjdk-11 中是 --version(两个破折号)。他们确实需要更好的“未知命令”错误消息>_
【解决方案2】:

我今天遇到了这个问题,对我来说问题是我分配了太多内存:

-Xmx1024M -XX:MaxPermSize=1024m

一旦我减少了 PermGen 空间,一切正常:

-Xmx1024M -XX:MaxPermSize=512m

我知道这看起来差别不大,但我的机器只有 4GB 的 RAM,显然这是压垮骆驼的最后一根稻草。 Java VM 在每次操作时都会立即失败,因为它无法分配内存。

【讨论】:

    【解决方案3】:

    设置JVM内存:

    export _JAVA_OPTIONS=-Xmx512M

    【讨论】:

      【解决方案4】:

      确保物理可用内存大于 VM 定义的最小/最大内存。

      【讨论】:

        【解决方案5】:

        当我使用与/etc/profiles/etc/profiles.d/limits.sh 中相同的内容编辑文件/etc/bashrc 并重新登录时,问题得到解决。

        【讨论】:

        • 在执行他的建议之前先尝试java -version。这也是提问者的答案,并没有解释具体的步骤是什么......
        猜你喜欢
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-14
        • 2017-05-30
        • 1970-01-01
        • 2012-10-20
        • 2019-12-15
        相关资源
        最近更新 更多