在JAVA项目运行过程中可能会报内存溢出错误,导致内存溢出的原因可能是代码问题,也可能是项目比较大,占用JVM内存比较大,而Tomcat运行内存又比较小导致。以下说明通过startup.bat和windows 服务两种方式下tomcat启动内存的配置方式。
1.startup.bat启动
在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行:
set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M
解释一下各个参数:
-Xms1024M:初始化堆内存大小(注意,不加M的话单位是KB)
-Xmx1029M:最大堆内存大小
-XX:PermSize=256M:初始化类加载内存池大小,非堆内存的值。
-XX:MaxPermSize=256M:最大类加载内存池大小,非对内存的最大值。
-XX:MaxNewSize=256M:设置JAVA堆区域新生代内存的最大可分配大小。一般堆区会分为3个区域,新生代、中生代和老年代。我们在程序中通过new关键字新建出来的对象,一般都会分配在新生代中。当新生代满了后,JVM会通过GC来进行一次小规模的垃圾回收,此时新生代中存活的对象会被移动至中生代。
你所说的这个参数就是设置新生代的最大值,从上可知,这个大小也间接决定了JVM进行monior gc的频率。如果你不设置,JVM启动时会给它一个默认值。
还有一个-server参数,是指启动jvm时以服务器方式启动,比客户端启动慢,但性能较好,大家可以自己选择。
2.windows服务启动
如果你的tomcat是注册为windows服务并且是以服务方式启动的,那么上面的方法就无效了,因为这时tomcat启动是读取注册表的参数,而不是读取批处理文件的参数,这时我们有两种方法来设置jvm参数。
第一种比较简单,tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat6w.exe,如下图:
下方的Initial memory pool就是初始化堆内存大小,Maximun memory pool是最大堆内存大小。
而要设置Perm Gen池的大小就要在Java Option里面加参数了,在里面加上:
-Dcatalina.base=%tomcat_home%
-Dcatalina.home=%tomcat_home%
-Djava.endorsed.dirs=%tomcat_home%\endorsed
-Djava.io.tmpdir=%tomcat_home%\temp
-XX:PermSize=256M
-XX:MaxPermSize=256M
-XX:ReservedCodeCacheSize=48M
-Duser.timezone=GMT+08
(PS:网上说每一行后面不要有空格,没试过)
第二种方法是打开注册表->HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java(路径可能有一点点差别)
修改Options的值,把刚才上面那些参数加进去就OK了。(别忘了先备份一下注册表)
相关推荐
tomcat启动内存设置[参考].pdf
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。 -Xms:初始值 -Xmx:最大值 -Xmn:最小值 解决办法: 修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\...
给tomcat设置使用内存,在配置文件中加入一段代码即可!
设置Tomcat的初始启动内存方法,会解决Out Of Memory的问题
Tomcat JVM虚拟机默认内存1800 M左右,当服务内存不够用时,需要手动设置内存大小,不可超过服务器系统内存的80%,本文档提供设置方法(使用命令启动有效),实测可用。
windows及linux环境下,tomcat启动参数的设置。在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数...
eclipse tomcat启动,内存溢出问题
Tomcat默认可以使用的内存很小,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整...
对Tomcat启动参数,内存的设置
在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。本文就介绍了Tomcat内存溢出的三种情况及解决办法分析
Tomcat 7 Windows中以Service方式启动配置启动参数
myeclipse-tomcat jdk内存溢出,针对myeclipse做的相应的配置
eclipse启动tomcat内存泄漏解决
打开tomcat目录下\bin\tomcat7w.exe,点击Java选项卡,然后将会发现其中有这么两项:Initial memory pool和Maximum memory pool,其中Initial memory pool这个就是初始化设置的内存的大小。Maximum memory pool这个...
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...
Tomcat启动闪退是一个常见的问题,...2、检查内存设置 3、检查端口冲突 4、检查JDK版本和Tomcat版本兼容性 5、检查环境变量 6、检查配置文件 7、尝试清理和重建 8、升级或重装Tomcat 9、查看系统资源 10、检查安全软件
tomcat默认的使用内存大小为64M,在某些应用中可能不够,所以需要自己手动更改内存,配置tomcat文件增加内存
TOMCAT8在WINDOWS7环境下的简单配置说明,供参考使用。
Windows下调整Tomcat启动参数 Tomcat默认可以使用的内存为128MB,对于访问数比较多、比较吃内存的应用来说,这是不够的。我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使用的内存。 下面就是众所周知的...