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
##另外这个看报错时,主要是根据报错的提示括弧()里的报错处理异常, ##如果()里有关于Time报错。在写地址时加参数就可以了,如上图鼠标处。 #此处理方法时查阅各种百度调式几小时成功的,希望能帮到你 作者:~!~
这项研究通过结合陈述偏好方法和基于市场的方法(如市场价格方法,重置成本,可避免成本)来检验Kimhy Reserve的总经济价值(TEV)。 结果表明,Kimhy Reserve具有使用价值和非使用价值。 Kimhy Reserve邻近社区的...
替换 msys-1.0.dll 解决 Couldn't reserve space for cygwin's heap 的错误提示
dex2jar和jd-gui,dex2jar和jd-gui,dex2jar和jd-gui,dex2jar和jd-gui,dex2jar和jd-gui,
永磁同步电机是数控机床!机器人控制等的主要执行元件,随着 稀土永磁材料!永磁电机设计制造技术!电力电子技术!微处理器技 术的不断发展和进步,永磁同步电机控制技术成为了交流电机控制技 术的一个新的发展方向"基于它...
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-...
RESERVE 模块
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
Reserving memory address space is a way to reserve a range of virtual addresses for later use. If you attempt to access a reserved address that has not yet been committed (backed by memory or disk) ...
读者可以直接拷贝这三个函数到程序中去,使用Allocate()和My_Free()代替系统提供的alloc()和free()函数。调试环境为TC2.0或者TC3.0 /* FILE: ALLOCATE.C */ #define PRIVATE static /* Used to hide ...
POINT I/O Address Reserve Modulepdf,POINT I/O Address Reserve Module
为了方便大家使用Liberty Reserve进行电子商务接口的开发,将LR官网的说明文档翻译了一下,包含API\XML\SCI完整内容,还有PHP开发的例子,可供参考。
上来直接问基础知识 后面才问项目 1.虚函数,多态实现,纯虚函数和虚函数区别,析构函数可以是虚函数吗,虚继承和虚基类。 2.STL:vector中reserve 和resize 区别 3.map和unordered_map区别 4.哈希表解决冲突的办法...
Lua gives you the bare bones support and enough rope and not much else. Unicode is a large and complex standard and questions like "does lua support unicode" are extremely vague. Some of the issues...
Reserve Hotel.mdj