关于Myeclipse下的JVM启动异常的问题:Out Of Memery / Could not reserve enough space for object heap

以下都是初步理解:

这主要是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,因为有一部分被硬件占用了。

参考:http://blog.sina.com.cn/s/blog_59d8af510100y6gz.html

我使用的是myeclipse10自带的Tomcat6,因为涉及到数据库数据的导入导出,因此经常报出Out Of Memery 或则 Could not reserve enough space for object heap的问题。
a),Out Of Memery是内存溢出,通常是在程序运行过程中抛出的错误,当我们不断的通过new创建实例时,显然这是我们的堆内存不够用了,这时只需将-Xmx和-Xms同时增大即可(到底能加多大,下面再说)。
b),Could not reserve enough space for object heap,无法实例化,这也是在程序运行过程中抛出的错误,根据上面的介绍,我们知道这是JVM的非堆内存不够造成的,因此我们需要将XX:MaxPermSize的值是当增大。
c),无法启动虚拟机,通常情况下这是因为我们的内存配置的不合理。

我们可以在DOS命令行下,输入>java -XmxXXXXM -version来查看系统还有JDK最大管理的内存大小(不是越大越好哦),XXXX指代具体的值。不同的JDK,可管理的内存空间大小不一样。


参考:http://blog.sina.com.cn/s/blog_56d8ea900100c3tf.html。

打开windows的资源管理器,我们可以查看javaw运行占用的系统内存,一旦大于上面的极限值,就会报错,我们可以通过修改程序代码来解决。(减少初始化到内存的数据,代码整体功能分模块实现等等)

注意:-Xmx和-XX的总和不能超过XXXX的最大值。(-Xmx值越大,程序肯定跑的越快,实际测试)

上面有提到Myeclipse本身默认配置的-Xmx和-XX,在~\MyEclipse 10下面的myeclipse.ini里面,如果启动Myeclipse时,报出create VM fail错误,那就是该文件的这两个参数配制出了问题,多半是设置的值过大,超过了默认VM的管理能力范围。

时间: 2025-01-06 02:09:02

关于Myeclipse下的JVM启动异常的问题:Out Of Memery / Could not reserve enough space for object heap的相关文章

启动tomcat报错 Could not reserve enough space for object heap的解决办法

问题:打开eclips启动tomcat发现报出Could not reserve enough space for object heap错误. 解决办法:1.首先检查tomcat是否能正常启动.remove掉tomcat里所有的项目启动.如果仍然有错就说明是tomcat有问题.删除tomcat 重新部署一个,即可解决.    2.如果启动tomcat没错,项目添加后有问题,就是jvm 溢出  内存不够.就要进行修改jvm内存启动即可.

Tomcat启动报错 Could not reserve enough space for object heap

报错信息: Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. 解决方法: 在catalina.bat中增加如下设置 set JAVA_OPTS=-server -XX:MaxHeapSize=256m -Xms512m -Xmx512m

MyEclipse 下 Tomcat启动变慢如何解决

MyEclipse   下  Tomcat启动变慢如何解决 项目使用debug启动有时候会突然变得非常慢.不但启动慢,启动之后连打开项目页面也很慢,是日常的4,5倍.可以有下面的几种解决方法: 1. 由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务器里的工程全部启动,工程多了自然启动时间就慢,所以可以把以前的删除:tomcat安装目录\jakarta-tomcat-6.029webapps在   webapps  目录下把会看到以前的工程都删除了 2. 可能

Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"]

在mac下使用brew安装mysql,之前没有使用过,今天启动的时候发现启动不了 huijundeMacBook-Pro:bin huijunzhang$ mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 查看mysql的安装位置: huijundeMacBook-Pro:bin huijunzhang$ which mysql /usr/local

Linux下Mysql启动异常排查方案

遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/mysql.sock'”类似问题,查看Mysql配置文件(默认在/etc/my.cnf目录下),使用命令vi /etc/my.cnf,查看是否具备如下配置, [mysqld]port            = 3306socket       = /var/lib/mysql/mysql.sock 可能

Myeclipse下的Tomcat映射问题

这个问题真的很头疼啊. 环境是: Myeclipse2015 tomcat 8(使用Myeclipse默认导入的配置) 问题呢: 在Myeclipse下创建一个web project,如果是不创建默认web.xml,就可以进入index页面. 如果默认创建了web.xml文件,就会出现404错误. 然而,最头疼的是,我创建了一个EasyUI的测试project,页面就两个,index.jsp和main.jsp, 1 <%@ page language="java" import=

在MyEclipse/eclipse修改jvm内存大小

修改MyEclipse/eclipse文件夹中配置文件eclipse.ini中的内存分配就哦了  ===================================  一般的ini文件设置主要包括以下几项: -vmargs -Xms40m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128M 以下解释其意思. -vmargs:说明后面是VM的参数 -Xms40m:虚拟机占用系统的最小内存 -Xmx256m:虚拟机占用系统的最大内存 -XX:PermSi

hadoop namenode启动异常,死活失败

2014-05-12注定是春光灿烂猪八戒的一天,历史595无故障的hadoop服务器,终于还是出了问题,事前无人登陆操作服务器,此故障属于自发行为,目前未知发生原因. 细节描述: namenode无法启动. 先贴出错误信息 2014-05-12 07:17:39,447 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: STARTUP_MSG: /**********************************************

(转)Linux下tomcat JVM内存设置步骤

java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space --------------------------------------------------------- 这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理. 一.java.lang.OutOfMemoryError: PermGen space PermGen space的全称