怎么给Tomcat分配指定大小的内存??

解决方案 »

  1.   

    在 catalina.bat / sh 里面,增加配置参数就行了 JAVA_OPTS = -Xmx1024m 类似这样的 
      

  2.   

    在catalina.bat的
      rem ----- Execute The Requested Command ---------------------------------------
      echo Using CATALINA_BASE:   %CATALINA_BASE%
      echo Using CATALINA_HOME:   %CATALINA_HOME%
      echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
      echo Using JAVA_HOME:     %JAVA_HOME%
    这一栏改为
      rem ----- Execute The Requested Command ---------------------------------------
      set JAVA_OPTS=-Xms512m -Xmx512m 
      echo Using CATALINA_BASE:   %CATALINA_BASE%
      echo Using CATALINA_HOME:   %CATALINA_HOME%
      echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
      echo Using JAVA_HOME:     %JAVA_HOME%
    就可以将JAVA虚拟机分配内存 508.0625MB的!但是很多人修改后,发现修改并没有起作用,即通过windows的服务启动tomcat时,实际的内存还是默认的,修改的设置并没有起作用;而通过\bin\startup.bat 启动却是生效的。这是为什么呢?因为在安装过程中,JVM的初始化参数已经写在注册表中了,由于没有修改注册表中相关参数,所以以windows服务方式启动时,修改的并没有生效。而通过\bin\startup.bat 启动直接是通过\bin\catalina.bat文件中的配置的。你需要重新加载到系统服务中才生效,或者你手工在注册表中查找修改启动值,加载到服务中的时候参数已经配置好了,自己修改artup.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
      

  3.   

    由于JVM对内存管理的机制,在获得编程时对内存管理的简便性的前提下,不可避免的需要为JVM指定可以使用的内存区域,JVM启动时分配这些内存,运行过程中由它自己管理分配。 
    在访问量比较大的情况下,就要求为JVM提供较大的内存分配区域,可以通过启动参数来设置,具体说明如下: 
    启动参数放置在启动命令行中(tomcat.bat或catalina.bat文件中),格式如下: 
    java   ....-DmsXXM   -DmxXXM.... 
    其中XX是内存大小,M表示设置的单位是兆,ms是制最小内存分配,mx指最大内存分配,具体例子如下: java   ....-Dms128M   -Dmx256M.... 表示JVM启动时最小开辟128M内存提供使用,最大开辟到256M内存使用。 设置内存大小的原则,从我个人的经验来看,最小值应该是内存总量的1/4到1/3,最大值不超过内存总量的1/2(最大可以设置到512M),如机器内存是512M,则可以设置成: java   ....-Dms128M   -Dmx256M....