eclipse直接启动的时候提示错误:Could not reserve enough space for object
heap,其解决方式是修改eclipse.ini的配置。其根本原因在于jvm的内存分配。
1、按照jvm的设计规则,JVM内存分为堆(Heap)和非堆(Non-heap)内存
“Java
虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java
虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap
memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给
自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法
的代码都在非堆内存中。
(1)堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的
1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服
务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
(2)非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设
置最大非堆内存的大小,默认是物理内存的1/4。
2、根据上面的分析已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统,-Xmx的值和
-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说
明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
所以将内存的设置信息更改成
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
eclipse正常启动了
总结: 实际上,导致这样的启动错误,是因为物理内存太小了,而eclipse的配置文件中要的太多了,如果不是命令行启动,你可能不知道原因,只会给你一个弹出框,可以在命令行下面调用eclipsec.exe,它可以加一些启动参数如-console.
这时,发现的提示信息比较有用,
Error occurred during initialization of VM
Could not reserve enough space for object heap
很明显的,就知道内存空间的问题在, 把-Xmx512 改小一点, 改为 -Xmx384m 问题解决了
分享到:
相关推荐
"could not reserve enough space for object heap" 是一个常见的Java虚拟机(JVM)启动时遇到的问题,这通常意味着JVM在尝试分配堆内存时遇到了不足的空间。这个问题涉及到Java内存管理和虚拟机配置,对于理解Java...
##另外这个看报错时,主要是根据报错的提示括弧()里的报错处理异常, ##如果()里有关于Time报错。在写地址时加参数就可以了,如上图鼠标处。 #此处理方法时查阅各种百度调式几小时成功的,希望能帮到你 作者:~!~
这项研究通过结合陈述偏好方法和基于市场的方法(如市场价格方法,重置成本,可避免成本)来检验Kimhy Reserve的总经济价值(TEV)。 结果表明,Kimhy Reserve具有使用价值和非使用价值。 Kimhy Reserve邻近社区的...
在 Tomcat 启动时,提示:“Error occurred during initialization of VM Could not reserve enough space for object heap”。该错误是因为 Tomcat 的 bin 目录下,catalina.sh 文件的 Tomcat 内存参数配置过大,...
在Android应用开发中,安全和隐私保护是至关重要的议题,然而,有时候为了学习、调试或者逆向工程的目的,我们需要对APK文件进行反编译。在这个过程中,`dex2jar` 和 `jd-gui` 是两个非常关键的工具,它们在Android...
Could not reserve enough space for object heap Unable to create JVM. ``` 这表明在初始化Java虚拟机时发生了错误,具体原因是无法为对象堆分配足够的内存空间。这意味着当前系统的内存设置不足以支持JBuilder...
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. ``` * **调整内存设置** 检查`gradle....
6. **内存分配问题**:另一个常见的错误是“Error occurred during initialization of VM Could not reserve enough space for 1572864KB object heap”。这意味着JVM在启动时无法分配足够的内存。你可以通过修改`...
在打包过程中可能会遇到问题,如描述中提到的错误日志:“Error occurred during initialization of VM...Could not reserve enough space for 1048576KB object heap”。这个错误表明Java虚拟机(JVM)在启动时无法...
Couldn't reserve space for cygwin's heap ``` **问题描述**: 此错误提示表示在为 Cygwin 的堆分配空间时出现了问题。Cygwin 是一套在 Windows 操作系统上运行的 POSIX 兼容工具集。 **原因分析**: - **内存...
7)....Fixed: Generic names with "," could not be decoded in Viewer 8)....Fixed: Updated Windows 10 detection for latest builds of Windows 10 9)....Fixed: Sleep and hybernation no longer trigger false-...
永磁同步电机是数控机床!机器人控制等的主要执行元件,随着 稀土永磁材料!永磁电机设计制造技术!电力电子技术!微处理器技 术的不断发展和进步,永磁同步电机控制技术成为了交流电机控制技 术的一个新的发展方向"基于它...
当执行`cordova build android`命令时,可能会出现“Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap”的错误。为解决这个问题,可以在系统环境变量中创建一...
【RESERVE模块】是SIMATIC ET 200S分布式I/O系统中的一款组件,型号为6ES7138-4AAx1-0AA0。该模块主要用于预留I/O通道,确保系统在扩展或替换时有充足的接口资源。在工业自动化领域,这种模块的使用能够帮助用户灵活...
Liberty Reserve(LR)曾是一种在线支付系统,广泛用于电子商务交易。尽管该服务已不再运营,但其API(应用程序编程接口)的相关知识仍然对理解数字货币和支付系统开发具有一定的历史价值和教育意义。以下是关于...
在描述中提到的“Couldn't reserve space for cygwin's heap”错误,通常发生在安装或运行基于Cygwin的程序时。这个错误意味着系统在尝试为Cygwin的堆分配内存空间时失败了。Cygwin是另一个类似Msys的开源项目,它为...
MySQL 的 msys-1.0.dll 源文件 msys-1.0.dll 有效解决RVDS编译Couldn't reserve space for cygwin's heap错误。下载后替换tools\MSYS\bin\msys-1.0.dll原文件。 msys
维持的准备金余额总额是指机构在联邦储备银行的帐户中可用来满足准备金要求的余额数量。从历史上看,该系列不包括准备金中用于合同清算...total-reserve-balances-maintained-with-federal-reserve-banks_metadata.json
POINT I/O Address Reserve Module属于系列C产品,能够保留一个节点地址,以便未来插入任何选项。 POINT I/O Address Reserve Module包含了多个组成部分,包括安装底座(mounting base)1734-MB、可移动终端块...