无法为对象堆预留足够的空间

当我运行时,每次我尝试运行该程序时,都会重复出现以下exception。

VM初始化期间发生错误

无法为对象堆预留足够的空间

无法创buildJava虚拟机。

我试图增加我的虚拟内存(页面大小)和内存大小,但无济于事。 谁能告诉我如何消除这个错误?

使用-XX:MaxHeapSize=512m (或任何大数字)(或简称为-Xmx512m )运行JVM,

这也可能是由于在32位HotSpot虚拟机上设置太大而导致的,例如:

 -Xms1536m -Xmx1536m 

可能会/将工作:

 -Xms1336m -Xmx1336m 

我在使用javac时遇到了这个问题,而且似乎没有select使用命令行选项,

 -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. 

所以这里的解决scheme就是这样设置_JAVA_OPTIONS

 -bash-3.2$ export _JAVA_OPTIONS="-Xmx256M" -bash-3.2$ javac HelloWorldApp.java Picked up _JAVA_OPTIONS: -Xmx256M 

这个编译好。

这种情况发生在有很多内存的机器上,但内存容量较低。 Java决定分配一个大堆,因为它检测机器中的内存,但不允许分配它,因为ulimits。

这里是如何解决它:

  • 转到开始 – >控制面板 – >系统 – >高级(选项卡) – >环境variables – >系统

variables – >新build:variables名称: _JAVA_OPTIONS

variables值: -Xmx512M

variables名称: Path
variables值: %PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

将其更改为适当的path。

与-Xmx512M结合使用-d64以确保您运行的是64位虚拟机。 在一台64位的机器上,我确信我运行的是64位的虚拟机,但是没有。 安装64位Java之后,-d64选项可以工作,-Xmx允许更大的内存大小。

 java -d64 -Xmx512M mypackage.Test 

我得到了同样的错误,并通过在run.conf.bat中进行configuration来解决这个问题

使用Jboss5x中的configurationrun.conf.bat运行JVM

如果空闲内存不可用,则在传递语句时,请在run.conf.bat中进行更改

 set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m 

32位Java需要运行内存中的连续可用空间。 如果你指定了一个很大的堆大小,即使你有更多的可用空间可用,也可能没有太多的连续可用空间。

在这种情况下,安装64位版本的Java有助于实现连续内存要求只适用于32位Java。

有时候,这个错误表明,服务器上的物理内存和交换实际上被充分利用了!

我最近在运行RedHat Enterprise Linux 5.7的服务器上看到这个问题,内存为48 GB。 我发现即使只是跑步

 java -version 

导致了同样的错误,这确定了问题不是特定于我的应用程序。

运行

 cat /proc/meminfo 

报告说,MemFree和SwapFree都分别低于MemTotal和SwapTotal值的1%

 MemTotal: 49300620 kB MemFree: 146376 kB ... SwapTotal: 4192956 kB SwapFree: 1364 kB 

在机器上停止一些其他正在运行的应用程序使得可用内存数字有所提高:

 MemTotal: 49300620 kB MemFree: 2908664 kB ... SwapTotal: 4192956 kB SwapFree: 1016052 kB 

在这一点上,一个新的Java实例可以启动,我可以运行我的应用程序。

(显然,对我来说,这只是一个临时的解决scheme,我仍然有一个突出的任务,要对该机器上运行的进程进行更彻底的检查,看看是否有某些工作可以降低名义内存利用率不得不诉诸停止申请。)

错误:

对于这个错误, “vm初始化时发生的错误无法为对象堆jboss预留足够的空间”

根本原因 :

  • 不正确/不足的内存分配给我们的JVM,如下所述。

  • jboss-eap-6.2 \ bin \ standalone.conf中的JAVA_OPTS =“ – Xms1303m -Xmx1303m -XX:MaxPermSize = 256m”或者 jboss-eap-6.2 \ bin中的“JAVA_OPTS = -Xms1G -Xmx1G -XX:MaxPermSize = 256M” \ standalone.conf.bat这不过是JVM内存分配池的参数罢了。

parsing度 :

  • 增加堆大小。 为了增加堆大小,
  • goto – > jboss-eap-6.2 \ bin \ standalone.conf.bat或者jboss-eap-6.2 \ bin \ standalone.conf
  • 更改 – > JAVA_OPTS =“ – Xms256m -Xmx512m -XX:MaxPermSize = 256m”其中-Xms是最小堆大小,-Xmx是最大堆大小。
  • 通常不推荐最小和最大尺寸相同。

  • 如果你从eclipse运行应用程序,

  • 双击服务器
  • select“打开启动configuration”,您将被redirect到“编辑启动configuration属性”窗口。
  • 在这个windown转到选项卡'(x)=参数'。
  • 在虚拟机参数中,定义您的堆大小,如下所述
  • “-Dprogram.name = JBossTools:JBoss EAP 6.1+运行时服务器”-server -Xms256m -Xmx512m -XX:MaxPermSize = 256m -Dorg.jboss.resolver.warning = true

我知道这里已经有很多答案了,但是没有一个能够帮助我。 最后,我打开文件/etc/elasticsearch/jvm.options并更改:

 -Xms2G -Xmx2G 

 -Xms256M -Xmx256M 

这为我解决了。 希望这可以帮助别人。

假设你的类名为Test in package mypackage 。 像这样运行你的代码:

 java -Xmx1024m mypackage.Test 

这将为您的代码保留1024 MB的堆空间。 如果你想512 MB,你可以使用:

 java -Xmx512m mypackage.Test 

1024m米, 1024m米等使用1024m

我有类似的问题。 我在64位机器上安装了32位版本的Java。 卸载该版本并安装64位版本的Java。 我能够解决这个问题。

假设您有足够的可用内存,并且正确设置了JVM参数,则可能会出现内存碎片问题。 检查Windows XP上的Java最大内存 。

我最近面临这个问题。 我有3个Java应用程序,以1024m或1280m堆大小开始。 Java正在查看swap中的可用空间,如果没有足够的可用内存,则jvm将退出。

要解决这个问题,我不得不结束几个分配了大量虚拟内存的程序。

我正在x86-64 linux上运行一个64位的jvm。

我有适量的内存设置,但对我来说,它是使用32位jvm的64位intellij。 一旦我切换到64位虚拟机,错误消失了。

无论如何,这里是如何解决它:转到开始 – >控制面板 – >系统 – >高级(选项卡) – >环境variables – >系统variables – >新:variables名称:_JAVA_OPTIONSvariables值:-Xmx512M

要么

改变ant电话如下所示。

  <exec **<arg value="-J-Xmx512m" />** </exec> 

它为我工作。

VM初始化期间发生错误无法为1572864KB对象堆预留足够的空间

我将settings.grade文件1536中的内存值更改为512,这有帮助

我在'mvn install'时运行testing时出现这个错误。

通过在pom.xml中添加以下内容来解决它:

-Xms256m -Xmx512m

如果你正在运行一个Java程序: – 运行你的程序在terminal使用正确的命令为Linux它将是'java -jar myprogram.jar'并添加-Xms256m -Xmx512m,例如:'java -jar myprogram.jar Xms256m -Xmx512m'

如果您正在运行.sh脚本(linux,mac?)或.bat脚本(windows),请打开该脚本并查找java选项(如果存在)并增加内存。

如果以上所有都不起作用,请检查您的进程(在Windows / Linux上按Ctrl + Alt + Delete)(Linux / Mac上的ps aux),并终止使用内存分配的进程,这些进程对于您的操作系统不是必需的! =>尝试重新运行你的程序。

如果您正在运行32位JVM,将堆大小更改为可能会有所帮助。 你可以通过直接将args传递给java或者通过像下面这样的环境variables来实现,

 java -Xms128M -Xmx512M JAVA_OPTS="-Xms128M -Xmx512M" 

对于64位JVM,像-Xms512M -Xmx1536M这样的更大的堆大小应该可以工作。

对于Java7运行java -versionjava -d32java--d64 d64来检查您正在运行的版本。

在CASSANDRA_HOME / bin / cassandra.bat中,您可以find以下configuration

 REM JVM Opts we'll use in legacy run or installation set JAVA_OPTS=-ea^ -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.3.0.jar"^ -Xms**2G**^ -Xmx**2G**^ 

你可以把2G减less到一些较小的数字,例如1G甚至更小,它应该工作。

同样,如果你正在Unix上运行,改变.sh文件适当。

有时涉及到

 $ sysctl vm.overcommit_memory vm.overcommit_memory = 2 

如果您将其设置为:

 $ sysctl vm.overcommit_memory=0 

它应该工作。

在cassandra bin目录的cassandra.bat文件中将-Xms512M^replace为-Xms512M^或更大的内存大小。

我得到了同样的错误,当我使用%temp%删除临时文件并重新启动eclipse时,它得到了解决。

不需要做任何事情就像下面的POM文件一样

 <configuration> <maxmemory>1024M</maxmemory> </configuration>