`
dsotbs936
  • 浏览: 37081 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
文章分类
社区版块
存档分类
最新评论

eclipse直接启动的时候提示错误:Could not reserve enough space for object heap

阅读更多

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

    could not reserve enough space for object heap

    使用eclipse连接mysql时报错Could not create Poool…

    ##另外这个看报错时,主要是根据报错的提示括弧()里的报错处理异常, ##如果()里有关于Time报错。在写地址时加参数就可以了,如上图鼠标处。 #此处理方法时查阅各种百度调式几小时成功的,希望能帮到你 作者:~!~

    论文研究 - 越南Backan Kimhy Reserve的经济价值

    这项研究通过结合陈述偏好方法和基于市场的方法(如市场价格方法,重置成本,可避免成本)来检验Kimhy Reserve的总经济价值(TEV)。 结果表明,Kimhy Reserve具有使用价值和非使用价值。 Kimhy Reserve邻近社区的...

    msys-1.0.dll

    替换 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,dex2jar和jd-gui,

    (1)(好东西)永磁同步电机矢量控制策略研究与控制器实现

    永磁同步电机是数控机床!机器人控制等的主要执行元件,随着 稀土永磁材料!永磁电机设计制造技术!电力电子技术!微处理器技 术的不断发展和进步,永磁同步电机控制技术成为了交流电机控制技 术的一个新的发展方向"基于它...

    EurekaLog_7.5.0.0_Enterprise

    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 模块.pdf

    RESERVE 模块

    MySQL 的 msys-1.0.dll 原文件

    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

    Reserve Balances Maintained: Federal Reserve Banks 维持储备金余额:美联储银行-数据集

    维持的准备金余额总额是指机构在联邦储备银行的帐户中可用来满足准备金要求的余额数量。从历史上看,该系列不包括准备金中用于合同清算...total-reserve-balances-maintained-with-federal-reserve-banks_metadata.json

    微软内部资料-SQL性能优化2

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

    C语言高级编程及实例部.rar

    读者可以直接拷贝这三个函数到程序中去,使用Allocate()和My_Free()代替系统提供的alloc()和free()函数。调试环境为TC2.0或者TC3.0 /* FILE: ALLOCATE.C */ #define PRIVATE static /* Used to hide ...

    POINT I/O Address Reserve Module.pdf

    POINT I/O Address Reserve Modulepdf,POINT I/O Address Reserve Module

    Liberty Reserve API SCI中文官方开发文档

    为了方便大家使用Liberty Reserve进行电子商务接口的开发,将LR官网的说明文档翻译了一下,包含API\XML\SCI完整内容,还有PHP开发的例子,可供参考。

    8-12腾讯二面答案.docx

    上来直接问基础知识 后面才问项目 1.虚函数,多态实现,纯虚函数和虚函数区别,析构函数可以是虚函数吗,虚继承和虚基类。 2.STL:vector中reserve 和resize 区别 3.map和unordered_map区别 4.哈希表解决冲突的办法...

    LuaUnicode icu-lua

    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

    Reserve Hotel.mdj

Global site tag (gtag.js) - Google Analytics