当我运行时,每次尝试运行程序时,我都会反复出现以下异常.
VM初始化期间发生错误
无法为对象堆保留足够的空间
无法创建Java虚拟机.
我试图增加我的虚拟内存(页面大小)和RAM大小,但无济于事.任何人都可以告诉我如何消除此错误?
Boz*_*zho 202
使用-XX:MaxHeapSize=512m(或任何大数字)(或-Xmx512m简称)运行JVM
dja*_*fan 122
这也可能是因为在32位HotSpot vm上设置了太大的东西,例如:
-Xms1536m -Xmx1536m
Run Code Online (Sandbox Code Playgroud)
这可能/将起作用:
-Xms1336m -Xmx1336m
Run Code Online (Sandbox Code Playgroud)
Jen*_*man 45
我在使用javac时碰到了这个问题,而且它似乎没有在命令行选项中找到,
-bash-3.2$ javac -Xmx256M HelloWorldApp.java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
所以这里的解决方案就这样设置了_JAVA_OPTIONS
-bash-3.2$ export _JAVA_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.java
Picked up _JAVA_OPTIONS: -Xmx256M
Run Code Online (Sandbox Code Playgroud)
这编译得很好.
在具有大量内存但具有较低内存ulimits的计算机上,这种情况发生在我身上.Java决定分配一个大堆,因为它检测到机器中的ram,但由于ulimits不允许分配它.
Moh*_*del 44
这是如何解决它:
变量 - >新:变量名称: _JAVA_OPTIONS
变量值: -Xmx512M
变量名称:Path
变量值:%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
将其更改为适当的路径.
Joh*_*Eye 32
32位Java需要内存中的连续可用空间才能运行.如果指定较大的堆大小,即使可用空间比可用空间多得多,内存中也可能没有那么多连续的可用空间.
在这些情况下,安装64位版本的Java有助于连续内存要求仅适用于32位Java.
Axl*_*Axl 26
与-Xmx512M结合使用-d64以确保您运行的是64位VM.在64位计算机上,我确信我运行的是64位虚拟机,但没有.安装64位Java后,-d64选项可以正常工作,-Xmx允许更大的内存大小.
java -d64 -Xmx512M mypackage.Test
Run Code Online (Sandbox Code Playgroud)
小智 14
我得到了同样的错误,并通过在run.conf.bat中配置解决了这个问题
使用Jboss5x中的配置run.conf.bat运行JVM
如果空闲内存不可用,则在传递语句时请在run.conf.bat中进行更改
set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)
liv*_*ove 11
打开 android 文件夹中的 gradle.properties 文件。
替换这一行:
org.gradle.jvmargs=-Xmx1536M
Run Code Online (Sandbox Code Playgroud)
和:
org.gradle.jvmargs=-Xmx512m
Run Code Online (Sandbox Code Playgroud)
说明:来自 Gradle 文档的最大限制:
如果请求的构建环境没有指定最大堆大小,守护进程将使用最多 512MB 的堆。
我知道这里有很多答案,但没有一个能帮到我.最后我打开文件/etc/elasticsearch/jvm.options并更改:
-Xms2G
-Xmx2G
Run Code Online (Sandbox Code Playgroud)
至
-Xms256M
-Xmx256M
Run Code Online (Sandbox Code Playgroud)
这解决了我.希望这可以帮助其他人.
假设您的类Test在包中被调用mypackage.像这样运行你的代码:
java -Xmx1024m mypackage.Test
Run Code Online (Sandbox Code Playgroud)
这将为您的代码保留1024 MB的堆空间.如果你想要512 MB,你可以使用:
java -Xmx512m mypackage.Test
Run Code Online (Sandbox Code Playgroud)
使用在小M 1024m,512m等
有时,此错误表示服务器上的物理内存和交换实际上已充分利用!
我最近在运行带有48 GB RAM的RedHat Enterprise Linux 5.7的服务器上看到了这个问题.我发现即使只是跑步
java -version
Run Code Online (Sandbox Code Playgroud)
导致相同的错误,这确定问题不是我的应用程序特定的.
运行
cat /proc/meminfo
Run Code Online (Sandbox Code Playgroud)
据报道,MemFree和SwapFree分别低于MemTotal和SwapTotal值的1%:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
Run Code Online (Sandbox Code Playgroud)
在计算机上停止其他几个正在运行的应用程序会使可用内存数据有所增加:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
Run Code Online (Sandbox Code Playgroud)
此时,Java的新实例将启动正常,我能够运行我的应用程序.
(显然,对我来说,这只是一个临时解决方案;我仍然有一项出色的任务是对该机器上运行的进程进行更彻底的检查,看看是否可以采取措施降低标称内存利用率水平,不得不求助于停止申请.)
对于错误,"在vm初始化期间发生的错误无法为对象堆jboss保留足够的空间"
如下所述,我们的JVM内存分配不正确/不足.
例如: - JAVA_OPTS = "MaxPermSize参数=256米Xms1303m -Xmx1303m -XX"在JBoss中-EAP-6.2\BIN\standalone.conf或: "MaxPermSize参数= 256M JAVA_OPTS = -Xms1G -Xmx1G -XX"在JBoss中-EAP-6.2\bin中\ standalone.conf.bat这只是JVM内存分配池参数.
通常不推荐它具有相同的最小和最大尺寸.
如果你是从eclipse运行你的应用程序,
| 归档时间: |
|
| 查看次数: |
900759 次 |
| 最近记录: |