Tomcat和JBoss加大启动堆和非堆内存,防止内存溢出的方法

直接上图:

JBoss,找到%bin%/run.bat,用记事本打开,找到以下位置,并添加后面那段(即加大堆内存的方法):

 

Tomcat,

在%Tomcat%/bin目录下,新建如:run1.bat文件,内容如下:

 

set java_home=C:/j2sdk1.4.2_08
startup.bat  -Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:PermSize=256M

 

 

 即增加了启动的参数,加大启动内存。

 

 

在eclipse上的操作,如图:

 

 

 

 

 

对于这4个参数的解释如下:

 

-Xms128m -Xmx512m -XX:MaxPermSize=64m -XX:PermSize=128M

 

 

这四个参数其实都是JVM参数,

-Xms128m JVM初始分配的堆内存
-Xmx512m JVM
最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM
初始分配的非堆内存
-XX:MaxPermSize=128M JVM
最大允许分配的非堆内存,按需分配

(

关于java内存机制,可参考我的另外一篇博客

http://blog.csdn.net/liangbinny/article/details/8609927

)

 

Xms Xmx针对的是堆内存,是java代码可及的内存,是给开发人员使用的内存,比如,你把数据库的海量数据都load到内存里超过分配的堆内存,就会暴内存溢出,这个内存溢出就是OutOfMemory,堆溢出。

 

-Xms128m JVM初始分配的堆内存。如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。 

-Xmx512m JVM最大允许分配的堆内存。

 

-XX:PermSize=64M JVM初始分配的非堆内存,是JVM自己的,不是给开发人员用的,主要是用来存放ClassMeta的信息,Class文件在被 Load的时候被放入PermGen space区域,它和存放InstanceHeap堆区域不同。比如,这个往往发生在服务器(tomcat)加载项目时,项目太大又没设置非堆内存的话,启动就会暴这个错,因为大量class文件load到非堆内存,超过了非堆内存限制,就会暴PermGen space 错误,往往通过设置-XX:PermSize=64M -XX:MaxPermSize=128M解决,增大非堆内存。

-XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space就是内存益出。

 

这两种抛的异常是不一样的,堆内存益处是java.lang.OutOfMemory,非堆内存溢出会报java.lang.OutOfMemoryError: PermGen space

 

对于tomcat安装版,很多人在<CATALINA_HOME>\bin\catalina.bat文件的内容,即在里面增加一行代码:
set JAVA_OPTS=-Xms512m -Xmx512m

但发现不起作用.即通过windows的服务启动tomcat时,实际的内存还是默认的,修改的设置并没有起作用;而通过<CATALINA_HOME>\bin\startup.bat启动却是生效的。这是为什么呢?因为在安装过程中,JVM的初始化参数已经写在注册表中了,由于没有修改注册表中相关参数,所以以windows服务方式启动时,修改的并没有生效。而通过<CATALINA_HOME>\bin\startup.bat启动直接是通过<CATALINA_HOME>\bin\catalina.bat文件中的配置的。你需要重新加载到系统服务中才生效,或者你手工在注册表中查找修改启动值,加载到服务中的时候参数已经配置好了,自己修改sartup.bat不会改变注册表中的参数设置。

解决方法:修改注册表中的参数,加入JVM初始化内存的参数:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
值为

-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
如加入 -Xms512m -Xmx800m

 

参考:http://blog.csdn.net/asenwei/article/details/7409356

http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值